@webority/ui-elements 0.150.0 → 0.153.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 (110) hide show
  1. package/dist/{WuiCommentThread-By-u3c5S.js → WuiCommentThread-BmRsl0K1.js} +1 -1
  2. package/dist/{WuiDataTable-D8UW2DMH.js → WuiDataTable-B4BYCd_s.js} +1 -1
  3. package/dist/WuiInlineEdit-BlBuWkHG.js +1 -0
  4. package/dist/{WuiLightbox-D7Nf1SbH.js → WuiLightbox-C2A14vHx.js} +1 -1
  5. package/dist/{WuiMarkdown-N96OX-To.js → WuiMarkdown-BXY0QKaO.js} +1 -1
  6. package/dist/{WuiMentionInput-BFB57FZI.js → WuiMentionInput-8Xjkzdqg.js} +1 -1
  7. package/dist/{WuiNotificationCenter-C6e13nCh.js → WuiNotificationCenter-ClkCTUnp.js} +1 -1
  8. package/dist/{WuiOverflow-CeLUmJR-.js → WuiOverflow-B0wA6aDe.js} +1 -1
  9. package/dist/{WuiPhone-rtex3VDC.js → WuiPhone-BVNVerap.js} +1 -1
  10. package/dist/{WuiRelativeTime-RdC80Zii.js → WuiRelativeTime-DyeUQOQ8.js} +1 -1
  11. package/dist/{WuiRollingNumber-YRMeRCGW.js → WuiRollingNumber-sfgNzaP0.js} +1 -1
  12. package/dist/WuiSavedViews-UaiP6YNG.js +1 -0
  13. package/dist/WuiSelect-DBPre2oe.js +9 -0
  14. package/dist/WuiTour-Cx61ijsm.js +1 -0
  15. package/dist/{WuiTree-ZD9GGmtg.js → WuiTree-0Yqu199O.js} +1 -1
  16. package/dist/{chips-2yXiMhK4.js → chips-Dony2fgq.js} +1 -1
  17. package/dist/{dataTable-D23oUOhU.js → dataTable-B-7oAeii.js} +1 -1
  18. package/dist/{drawerDiscard-CUN8L47U.js → drawerDiscard-C0yRSl1I.js} +1 -1
  19. package/dist/elements/comment-thread.js +1 -1
  20. package/dist/elements/data-table.js +1 -1
  21. package/dist/elements/inline-edit.js +1 -1
  22. package/dist/elements/kanban.js +1 -1
  23. package/dist/elements/lightbox.js +1 -1
  24. package/dist/elements/markdown.js +1 -1
  25. package/dist/elements/mention-input.js +1 -1
  26. package/dist/elements/notification-center.js +1 -1
  27. package/dist/elements/overflow.js +1 -1
  28. package/dist/elements/phone.js +1 -1
  29. package/dist/elements/relative-time.js +1 -1
  30. package/dist/elements/rolling-number.js +1 -1
  31. package/dist/elements/saved-views.js +1 -1
  32. package/dist/elements/select.js +1 -1
  33. package/dist/elements/tour.js +1 -1
  34. package/dist/elements/tree.js +1 -1
  35. package/dist/{fileViewerImage-tzF4DDq7.js → fileViewerImage-Bt1jeArm.js} +1 -1
  36. package/dist/{fileViewerPdf-BLMhF8NT.js → fileViewerPdf-CdaDuaRJ.js} +1 -1
  37. package/dist/formatters-ljfITOZ3.js +1 -0
  38. package/dist/helpers.js +1 -1
  39. package/dist/{inlineEditText-H7Pr8IU9.js → inlineEditText-CsLCQbcg.js} +1 -1
  40. package/dist/{kanban-CJ587-XT.js → kanban-Dz8m-17x.js} +1 -1
  41. package/dist/{kanbanModel-BdqSa1lJ.js → kanbanModel-C2IOPJ8L.js} +1 -1
  42. package/dist/{notificationDays-BKVW7xYD.js → notificationDays-BIWczft0.js} +1 -1
  43. package/dist/{relativeTime-YTAOONRy.js → relativeTime-BahImc8F.js} +1 -1
  44. package/dist/{search-BXcvm716.js → search-C8xIzt6h.js} +1 -1
  45. package/dist/server.js +1 -1
  46. package/dist/ui-calendar.global.js +1 -1
  47. package/dist/ui-calendar.js +1 -1
  48. package/dist/ui-chart.global.js +2 -2
  49. package/dist/ui-chart.js +2 -2
  50. package/dist/ui-elements/carousel.global.js +1 -1
  51. package/dist/ui-elements/code-block.global.js +1 -1
  52. package/dist/ui-elements/command-palette.global.js +1 -1
  53. package/dist/ui-elements/comment-thread.global.js +1 -1
  54. package/dist/ui-elements/consent-banner.global.js +1 -1
  55. package/dist/ui-elements/context-menu.global.js +1 -1
  56. package/dist/ui-elements/date-range.global.js +1 -1
  57. package/dist/ui-elements/drawer.global.js +1 -1
  58. package/dist/ui-elements/glyphs.global.js +1 -1
  59. package/dist/ui-elements/image-crop.global.js +1 -1
  60. package/dist/ui-elements/inline-edit.global.js +1 -1
  61. package/dist/ui-elements/kanban.global.js +1 -1
  62. package/dist/ui-elements/lead-popup.global.js +1 -1
  63. package/dist/ui-elements/lightbox.global.js +1 -1
  64. package/dist/ui-elements/markdown.global.js +2 -2
  65. package/dist/ui-elements/org-tree.global.js +1 -1
  66. package/dist/ui-elements/phone.global.js +2 -2
  67. package/dist/ui-elements/resizable.global.js +1 -1
  68. package/dist/ui-elements/saved-views.global.js +1 -1
  69. package/dist/ui-elements/select-chips.global.js +1 -1
  70. package/dist/ui-elements/select-recents.global.js +1 -1
  71. package/dist/ui-elements/select-search.global.js +1 -1
  72. package/dist/ui-elements/slider.global.js +1 -1
  73. package/dist/ui-elements/sortable.global.js +1 -1
  74. package/dist/ui-elements/status-icon.global.js +1 -1
  75. package/dist/ui-elements/timepicker.global.js +1 -1
  76. package/dist/ui-elements/tour.global.js +1 -1
  77. package/dist/ui-elements/tree.global.js +1 -1
  78. package/dist/ui-elements/wizard.global.js +1 -1
  79. package/dist/ui-elements.global.js +9 -9
  80. package/dist/ui-elements.js +1 -1
  81. package/dist/ui-file-viewer.global.js +1 -1
  82. package/dist/ui-file-viewer.js +1 -1
  83. package/dist/ui-tour.global.js +1 -1
  84. package/dist/{wuiHttp-523iN_RF.js → wuiHttp-DGbD7Fra.js} +1 -1
  85. package/package.json +4 -3
  86. package/types/WuiCommentThread.d.ts +2 -2
  87. package/types/WuiImageCrop.d.ts +4 -4
  88. package/types/WuiSelect.d.ts +9 -0
  89. package/types/WuiTour.d.ts +1 -1
  90. package/types/chartSpec.d.ts +20 -20
  91. package/types/fileValidation.d.ts +2 -2
  92. package/types/fileViewerPdf.d.ts +3 -3
  93. package/types/formatters.d.ts +19 -14
  94. package/types/inputMask.d.ts +3 -3
  95. package/types/kanban.d.ts +1 -1
  96. package/types/listQuery.d.ts +10 -10
  97. package/types/razor-js/modules/api.d.ts +3 -0
  98. package/types/razor-js/modules/buttons.d.ts +1 -0
  99. package/types/razor-js/modules/widgets.d.ts +1 -0
  100. package/types/razor-js/webority-ui.d.ts +3 -0
  101. package/types/select/list.d.ts +8 -8
  102. package/types/server/remoteModal.d.ts +12 -12
  103. package/types/server/wuiHttp.d.ts +5 -5
  104. package/types/stepperHeader.d.ts +2 -2
  105. package/types/themeTransition.d.ts +2 -2
  106. package/dist/WuiInlineEdit-r55qgh8A.js +0 -1
  107. package/dist/WuiSavedViews-DtyAoZKb.js +0 -1
  108. package/dist/WuiSelect-D9ABfsdZ.js +0 -9
  109. package/dist/WuiTour-CrIFLmSK.js +0 -1
  110. package/dist/formatters-C3V6M5zV.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as e}from"./dom-Do1pAA12.js";import{a as t,s as n,t as r}from"./zone-BR02ZkHF.js";var i=`INR`,a=Object.freeze({INR:`₹`,USD:`$`,EUR:`€`,GBP:`£`,JPY:`¥`}),o=e=>typeof e==`string`&&/^[A-Z]{3}$/.test(e),s=(e=`INR`)=>a[e]??`${e} `,c=[`number`,`currency`,`percent`,`compact`,`duration`,`date`],l=[`INR`,`USD`,`EUR`,`GBP`],u=[`rupees`,`paise`],d=[`ms`,`s`,`min`,`h`],f=[`day`,`month`,`year`,`datetime`,`time`];function p(e){return u.some(t=>t===e)}var m=`-`,h=`−`,g=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],_=(t,n)=>e(t[n],`no compact unit at index ${n}`),v=[[1e7,`Cr`],[1e5,`L`],[1e3,`K`]],y=[[1e9,`B`],[1e6,`M`],[1e3,`K`]],b=e=>!e||e===`INR`?`en-IN`:`en-US`,x=(e,t)=>typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=20?e:t,S=/* @__PURE__ */ new Map,C=(e,t=`en-IN`)=>{let n=`${t}:${e}`,r=S.get(n);return r||(r=new Intl.NumberFormat(t,{minimumFractionDigits:0,maximumFractionDigits:e}),S.set(n,r)),r},w=/* @__PURE__ */ new Map,T=(e,t=`en-IN`)=>{let n=`${t}:${e}`,r=w.get(n);return r||(r=new Intl.NumberFormat(t,{minimumFractionDigits:e,maximumFractionDigits:e}),w.set(n,r)),r},E=e=>typeof e==`number`&&Number.isFinite(e),D=e=>e<0&&!Object.is(Math.abs(e),0)?h:``;function O(e){if(!Number.isInteger(e))throw Error(`A paise amount must be a whole number, got ${e}`);let t=BigInt(Math.abs(e)).toString().padStart(3,`0`);return`${e<0?`-`:``}${t.slice(0,-2)}.${t.slice(-2)}`}var k=(e,t)=>t===`paise`?Number(O(e)):e,A=2,j=(e,t,n)=>{let r=Math.min(t,A),i=10n**BigInt(A-r),a=(BigInt(O(e).replace(`.`,``))+i/2n)/i,o=10n**BigInt(r),s=T(0,n).format(a/o);return t===0?s:`${s}.${(a%o).toString().padStart(r,`0`)}${`0`.repeat(t-r)}`};function M(e,{decimals:t}={}){if(!E(e))return`-`;let n=C(x(t,2)).format(Math.abs(e));return n===`0`?`0`:D(e)+n}function N(e,{unit:t=`rupees`,decimals:n,currency:r=`INR`}={}){if(!E(e))return`-`;let i=x(n,0),a=b(r),o=t===`paise`?j(Math.abs(e),i,a):T(i,a).format(Math.abs(e));return(Number(o.replace(/,/g,``))===0?``:D(e))+s(r)+o}var P=e=>e>0&&e<.1?Math.min(20,1-Math.floor(Math.log10(e))):2;function F(e,{currency:t,unit:n=`rupees`}={}){if(!E(e))return`-`;let r=t?k(e,n):e,i=t?s(t):``,a=t?b(t):`en-IN`,o=a===`en-IN`?v:y,c=Math.abs(r),l=o.findIndex(([e])=>c>=e);if(l===-1){let e=C(P(c),a).format(c);if(e!==`1,000`)return(e===`0`?``:D(r))+i+e;l=o.length-1}let[u,d]=_(o,l),f=c/u,p=f>=100?0:f>=10?1:2,m=Number(f.toFixed(p));return m>=100&&l>0&&(--l,[u,d]=_(o,l),f=c/u,p=f>=100?0:f>=10?1:2,m=Number(f.toFixed(p))),`${D(r)}${i}${C(p,a).format(m)} ${d}`}function I(e,{decimals:t}={}){return E(e)?`${M(e*100,{decimals:x(t,1)})}%`:`-`}var L={ms:1,s:1e3,min:6e4,h:36e5};function R(e,{unit:t=`s`}={}){if(!E(e))return`-`;let n=L[t]??1e3,r=Math.abs(e*n),i=D(e);if(Math.round(r)<1e3)return`${i}${C(0).format(r)} ms`;let a=r/1e3;if(a<10)return`${i}${C(1).format(a)}s`;let o=Math.round(a);if(o<60)return`${i}${o}s`;let s=e=>String(e).padStart(2,`0`),c=Math.floor(o/60);if(c<60)return`${i}${c}m ${s(o%60)}s`;let l=Math.floor(c/60);return`${i}${C(0).format(l)}h ${s(c%60)}m`}function z(e,n=r){if(e instanceof Date)return e.getTime();if(E(e))return e;if(typeof e!=`string`)return NaN;let i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(i){let[e,r,a]=[Number(i[1]),Number(i[2]),Number(i[3])],o=new Date(Date.UTC(2e3,r-1,a));return o.setUTCFullYear(e),o.getUTCFullYear()===e&&o.getUTCMonth()===r-1&&o.getUTCDate()===a?t(o.getTime(),n):NaN}return Date.parse(e)}function B(e,t=r){let{year:i,month:a,day:o,hour:s,minute:c}=n(e,t);return{year:i,month:a,day:o,hour:s,minute:c}}function V(e,{pattern:t=`day`,timeZone:n=r}={}){let i=z(e,n);if(!Number.isFinite(i))return`-`;let a=B(i,n),o=e=>String(e).padStart(2,`0`),s=`${o(a.day)}-${g[a.month]}-${a.year}`,c=`${o(a.hour)}:${o(a.minute)}`;switch(t){case`month`:return`${g[a.month]}-${a.year}`;case`year`:return String(a.year);case`datetime`:return`${s} ${c}`;case`time`:return c;default:return s}}function H(e,t){if(e==null||e===``)return`-`;let n=t?.style;if(n===`date`)return V(e,t);if(typeof e!=`number`)return String(e);switch(n){case`currency`:return N(e,t);case`percent`:return I(e,t);case`compact`:return F(e,t);case`duration`:return R(e,t);default:return M(e,t)}}function U(e,{timeZone:t=r}={}){let n=z(e);if(!Number.isFinite(n))return`-`;let i=Object.fromEntries(G(t).formatToParts(n).map(e=>[e.type,e.value])),a=i.dayPeriod;if(a===void 0)throw Error(`Intl returned no day period for a 12-hour clock`);return`${i.day}-${g[Number(i.month)-1]}-${i.year}, ${i.hour}:${i.minute} ${a.toUpperCase()}`}var W=/* @__PURE__ */ new Map;function G(e){let t=W.get(e);return t||(t=new Intl.DateTimeFormat(`en-IN`,{day:`2-digit`,month:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`,hour12:!0,timeZone:e}),W.set(e,t)),t}function K(e=r){return new Intl.DateTimeFormat(`en-IN`,{timeZone:e,timeZoneName:`short`}).formatToParts(/* @__PURE__ */ new Date).find(e=>e.type===`timeZoneName`)?.value??e}export{z as _,c as a,s as b,N as c,R as d,M as f,K as g,p as h,m as i,V as l,H as m,f as n,u as o,I as p,d as r,F as s,l as t,U as u,a as v,o as x,i as y};
package/dist/helpers.js CHANGED
@@ -1 +1 @@
1
- import{r as e}from"./dom-Do1pAA12.js";import{n as t,r as n,t as r}from"./commentText-BnX7rA2-.js";import{n as i,t as a}from"./copyText-DM5HhXjf.js";import{_ as o,a as s,b as c,c as l,d as u,f as d,g as f,i as p,l as m,m as h,n as g,o as _,p as v,r as y,s as b,t as x,u as S,v as C,x as w,y as T}from"./formatters-C3V6M5zV.js";import{A as E,C as D,D as O,E as k,M as A,O as j,S as M,T as N,_ as P,a as ee,b as te,c as ne,d as re,f as ie,g as ae,h as oe,i as se,j as ce,k as le,l as ue,m as de,n as fe,o as pe,p as me,r as he,s as ge,t as _e,u as ve,v as ye,w as be,x as xe,y as Se}from"./dataTable-D23oUOhU.js";import{t as Ce}from"./iconGlyphs.g-DPqoOoXy.js";import{i as we,n as Te,r as Ee,t as De}from"./inlineEditText-H7Pr8IU9.js";import{a as Oe,c as ke,d as Ae,f as je,h as Me,i as Ne,l as Pe,m as Fe,n as Ie,o as Le,p as Re,r as ze,s as Be,t as Ve,u as He}from"./kanbanModel-BdqSa1lJ.js";import{a as Ue,i as We,n as Ge,o as Ke,r as qe,t as Je}from"./mentionText-BJsw_opZ.js";import{a as Ye,c as Xe,i as Ze,n as Qe,o as $e,r as et,s as tt,t as nt}from"./notificationDays-BKVW7xYD.js";import{o as rt}from"./optionLabel-4xjXWy74.js";import{n as it,r as at,t as ot}from"./relativeTime-YTAOONRy.js";import{a as st,c as ct,d as lt,f as ut,g as dt,h as ft,i as pt,l as mt,m as ht,n as gt,o as _t,p as vt,r as yt,s as bt,t as xt,u as St,v as Ct,y as wt}from"./themeTransition-9LQC6fx8.js";import{a as Tt,c as Et,d as Dt,f as Ot,i as kt,l as At,m as jt,n as Mt,o as Nt,p as Pt,r as Ft,s as It,t as Lt,u as Rt}from"./shortcutKeys-COVLox98.js";import{n as zt,t as Bt}from"./stepperHeader-yinJ_7Dk.js";import{t as Vt}from"./textMatch-wdY7XLIc.js";import{t as Ht}from"./tourSeenStore-z0Y_Znzx.js";import{i as Ut,n as Wt,o as Gt,r as Kt,s as qt,t as Jt}from"./zone-BR02ZkHF.js";var Yt=`image/jpeg,image/png,image/webp,image/heic,image/heif,.heic,.heif`,Xt=10,Zt=512,Qt=`image/webp`,$t=[96,48],F={dialogTitle:`Edit photo`,dialogSubtitle:`Drag to position the photo, then zoom or rotate it.`,save:`Save photo`,cancel:`Cancel`,choose:`Upload photo`,change:`Change photo`,camera:`Take photo`,remove:`Remove photo`,unreadable:`That photo could not be opened. Choose a JPG, PNG or WebP image.`,heicUnreadable:`This browser cannot open HEIC photos. Choose a JPG, PNG or WebP image instead.`,cropFailed:`That photo could not be saved. Try again, or choose another one.`};function en(e){if(!e)return!1;let t=String(e.type||``).toLowerCase();return t===`image/heic`||t===`image/heif`||/\.hei[cf]$/i.test(String(e.name||``))}function tn(e){return en(e)?F.heicUnreadable:F.unreadable}function nn(e,t){let n=Number(t);return{name:e?.name||`photo`,type:Qt,size:Number.isInteger(n)&&n>0?n:512}}var rn=`data-wui-command-shortcut`,an=`k`,on=/* @__PURE__ */ new WeakSet;function sn(e,t){return!(e.ctrlKey||e.metaKey)||e.altKey||e.shiftKey||e.repeat?!1:String(e.key).toLowerCase()===String(t).toLowerCase()}function cn(e){return e.nodeType===Node.DOCUMENT_NODE}function ln(t){let n=e(window.bootstrap?.Modal,`data-wui-command-shortcut: Bootstrap's bundle (window.bootstrap) is not loaded on this page.`),r=t.closest(`.modal`);r&&n.getOrCreateInstance(r).show()}function un(e){let t=cn(e)?e:e.ownerDocument;!on.has(t)&&e.querySelector(`[data-wui-command-shortcut]`)&&(on.add(t),t.addEventListener(`keydown`,e=>{for(let n of t.querySelectorAll(`[${rn}]`))if(sn(e,n.getAttribute(`data-wui-command-shortcut`)||an)){e.preventDefault(),n.localName===`wui-command-palette`||n.classList.contains(`modal`)?ln(n):(n.focus(),`select`in n&&typeof n.select==`function`&&n.select());return}}))}function dn(e){return typeof customElements<`u`&&customElements.get(e)!==void 0}async function fn(e){await customElements.whenDefined(e)}var pn=`image/png,image/jpeg,image/webp`,mn=5,hn={"image/png":[`.png`],"image/jpeg":[`.jpg`,`.jpeg`],"image/webp":[`.webp`],"image/gif":[`.gif`],"image/svg+xml":[`.svg`],"image/heic":[`.heic`],"image/heif":[`.heif`],"application/pdf":[`.pdf`],"text/plain":[`.txt`]},gn={"image/png":`PNG`,"image/jpeg":`JPG`,"image/webp":`WEBP`,"image/gif":`GIF`,"image/svg+xml":`SVG`,"image/heic":`HEIC`,"image/heif":`HEIC`,"application/pdf":`PDF`,"text/plain":`text file`,"image/*":`images`,"video/*":`videos`,"audio/*":`audio`,".png":`PNG`,".jpg":`JPG`,".jpeg":`JPG`,".webp":`WEBP`,".gif":`GIF`,".svg":`SVG`,".heic":`HEIC`,".heif":`HEIC`,".pdf":`PDF`,".txt":`text file`},I=e=>String(e||``).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean),_n=[`.png`,`.jpg`,`.jpeg`,`.webp`,`.gif`,`.svg`,`.bmp`,`.avif`,`.heic`,`.heif`];function vn(e){if(!e)return!1;let t=typeof e==`object`&&e.type?String(e.type).toLowerCase():``;if(t)return t.startsWith(`image/`);let n=typeof e==`string`?e:e.name||e.url||``,r=String(n).toLowerCase();return _n.some(e=>r.endsWith(e))}var yn=[`KB`,`MB`,`GB`];function bn(e){if(e<1024)return`${e} B`;let t=e/1024,n=0;for(;t>=1024&&n<yn.length-1;)t/=1024,n+=1;return`${t.toFixed(1)} ${yn[n]}`}function xn(e){if(!e)return!1;let t=typeof e==`object`&&e.type?String(e.type).toLowerCase():``;if(t)return t===`application/pdf`;let n=typeof e==`string`?e:e.name||e.url||``;return String(n).toLowerCase().replace(/[?#][\s\S]*$/,``).endsWith(`.pdf`)}function Sn(e){let t=I(e);return t.length?t.every(e=>e.startsWith(`.`)?_n.includes(e):e===`image/*`||e.startsWith(`image/`)):!1}function Cn(e){let t=[];for(let n of I(e)){let e=gn[n]||(n.startsWith(`.`)?n.slice(1).toUpperCase():n.toUpperCase());t.includes(e)||t.push(e)}return t.length<=1?t[0]||`supported`:`${t.slice(0,-1).join(`, `)} or ${t[t.length-1]}`}function wn(e,t){let n=I(t);if(!n.length)return!0;let r=(e.type||``).toLowerCase(),i=(e.name||``).toLowerCase();return n.some(e=>e.startsWith(`.`)?i.endsWith(e):e.endsWith(`/*`)?r.startsWith(e.slice(0,-1)):r&&r===e?!0:!r&&(hn[e]||[]).some(e=>i.endsWith(e)))}function Tn(e,t={}){if(!e)return null;let n=t.accept===void 0?pn:t.accept,r=t.maxSizeMb===void 0?5:t.maxSizeMb;if(!wn(e,n)){let e=Cn(n),t=I(n).map(e=>[`images`,`videos`,`audio`].includes(gn[e]??``));return t.every(Boolean)?`Choose ${e}.`:t.some(Boolean)?`Choose ${e.endsWith(` file`)?`${e}s`:`${e} files`}.`:`Choose a ${e.endsWith(` file`)?e:`${e} file`}.`}return r!==null&&r>0&&e.size>r*1024*1024?`Keep the file under ${r} MB.`:null}function En(e,t){let n=Array.from(e||[]),r=t.multiple?n:n.slice(0,1),i=[],a=[];for(let e of r){let n=Tn(e,{accept:t.accept,maxSizeMb:t.maxSizeMb});n?a.push({file:e,message:n}):i.push(e)}return{files:i,rejections:a}}function Dn(e,t){let{overClass:n,isDisabled:r=()=>!1,onFiles:i,onReject:a,...o}=t,s=0,c=t=>e.classList.toggle(n,t),l=e=>{e.preventDefault(),r()||(s+=1,c(!0))},u=e=>{e.preventDefault(),r()||c(!0)},d=e=>{e.preventDefault(),r()||(s=Math.max(0,s-1),s===0&&c(!1))},f=e=>{if(e.preventDefault(),s=0,c(!1),r())return;let{files:t,rejections:n}=En(e.dataTransfer?.files,o);t.length&&i(t);let l=n[0];l&&a(l)};return e.addEventListener(`dragenter`,l),e.addEventListener(`dragover`,u),e.addEventListener(`dragleave`,d),e.addEventListener(`drop`,f),()=>{e.removeEventListener(`dragenter`,l),e.removeEventListener(`dragover`,u),e.removeEventListener(`dragleave`,d),e.removeEventListener(`drop`,f)}}var L=/[0-9]/,On={9:L,A:/[A-Za-z]/,"*":/[0-9A-Za-z]/},kn=/[9A*]/,R=/* @__PURE__ */ new Set([`text`,`tel`,`search`,`url`,`password`]),An=e=>{let t=e.replace(/\D/g,``);return t.length===12&&t.startsWith(`91`)?t.slice(2):t.length===11&&t.startsWith(`0`)?t.slice(1):e},jn=e=>{let t=Number(e.slice(0,2)),n=Number(e.slice(2,4)),r=Number(e.slice(4,8));if(r<1)return!1;let i=new Date(Date.UTC(r,n-1,t));return i.getUTCFullYear()===r&&i.getUTCMonth()===n-1&&i.getUTCDate()===t},Mn=e=>e.length<=3?e:`${e.slice(0,-3).replace(/\B(?=(\d{2})+(?!\d))/g,`,`)},${e.slice(-3)}`,Nn=e=>{let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());return t?`${t[3]}-${t[2]}-${t[1]}`:e};function z(e,{upper:t=!1,normalize:n,valid:r,post:i=e=>e,message:a=`Enter the full value`}={}){let o=[...e].map(e=>{let t=On[e];return t?{re:t}:{lit:e}}),s=o.filter(e=>e.re).length;return{inputMode:o.every(e=>!e.re||e.re===L)?`numeric`:`text`,normalize:n,post:i,message:a,extract(e){let n=``,r=0;for(let i of e){for(;r<o.length&&o[r]?.lit!==void 0&&o[r]?.lit!==i;)r++;if(r>=o.length)break;let e=o[r];e?.lit===void 0?e?.re.test(i)&&(n+=t?i.toUpperCase():i,r++):r++}return n},layout(e){let t=``,n=[],r=0;for(let i=0;i<o.length&&r<e.length;i++){let a=o[i];a?.lit===void 0?(t+=e.charAt(r++),n.push(!0)):(t+=a.lit,n.push(!1))}return{text:t,isRaw:n}},isValid:e=>e.length===s&&(!r||r(e))}}function Pn(){return{inputMode:`decimal`,post:e=>e,message:`Enter a valid amount`,extract(e){let t=``,n=!1,r=0;for(let i of e)L.test(i)?n?r<2&&(t+=i,r++):t+=i:i===`.`&&!n&&(n=!0,t+=i);return t.startsWith(`.`)&&(t=`0${t}`),t.replace(/^0+(?=\d)/,``)},layout(e){let[t=``,n]=e.split(`.`),r=Mn(t)+(e.includes(`.`)?`.${n}`:``);return{text:r,isRaw:[...r].map(e=>e!==`,`)}},isValid:e=>/^\d+(\.\d{1,2})?$/.test(e)}}var B={"phone-in":()=>z(`99999 99999`,{normalize:An,valid:e=>/^[6-9]/.test(e),message:`Enter a 10-digit mobile number`}),pan:()=>z(`AAAAA9999A`,{upper:!0,valid:e=>/^[A-Z]{5}\d{4}[A-Z]$/.test(e),message:`Enter a valid PAN`}),gstin:()=>z(`99AAAAA9999A***`,{upper:!0,valid:e=>/^\d{2}[A-Z]{5}\d{4}[A-Z][1-9A-Z]Z[0-9A-Z]$/.test(e),message:`Enter a valid GSTIN`}),aadhaar:()=>z(`9999 9999 9999`,{valid:e=>/^[2-9]/.test(e),message:`Enter a valid 12-digit Aadhaar number`}),ifsc:()=>z(`AAAA*******`,{upper:!0,valid:e=>/^[A-Z]{4}0[A-Z0-9]{6}$/.test(e),message:`Enter a valid IFSC`}),"pin-code":()=>z(`999999`,{valid:e=>/^[1-9]/.test(e),message:`Enter a valid 6-digit PIN code`}),date:()=>z(`99-99-9999`,{normalize:Nn,valid:jn,post:(e,t)=>e.length===8&&jn(e)?`${e.slice(4)}-${e.slice(2,4)}-${e.slice(0,2)}`:t,message:`Enter a valid date as DD-MM-YYYY`}),amount:Pn},Fn=Object.keys(B),In=e=>{let t=String(e).toLowerCase();return Object.hasOwn(B,t)?t:void 0},Ln=e=>kn.test(String(e))&&In(e)===void 0,Rn=/* @__PURE__ */ new Map;function V(e){if(e==null||e===``)return null;let t=String(e),n=Rn.get(t);return n===void 0&&(n=Ln(t)?z(t):Object.hasOwn(B,t)?B[t]?.()??null:null,Rn.set(t,n)),n}var H=(e,t)=>e.normalize?e.normalize(t):t;function zn(e,t){let n=V(e);return n?n.extract(H(n,String(t??``))):String(t??``)}function Bn(e,t){let n=V(e);if(!n)return String(t??``);let r=n.extract(H(n,String(t??``)));return n.post(r,n.layout(r).text)}function Vn(e,t){let n=V(e);return n?n.layout(n.extract(H(n,String(t??``)))).text:String(t??``)}var Hn=(e,t)=>{if(t<=0)return 0;let n=0;for(let r=0;r<e.length;r++)if(e[r]&&++n===t)return r+1;return e.length},U=/* @__PURE__ */ new WeakMap,Un=e=>U.get(e)?.(),Wn=/* @__PURE__ */ new WeakMap;function Gn(e,t,n,r){let i=e.getAll(t),a=Wn.get(e)??/* @__PURE__ */ new Set;Wn.set(e,a);let o=i.findIndex((e,r)=>e===n&&!a.has(`${t}\u0000${r}`));if(!(o<0)){if(a.add(`${t}\u0000${o}`),i[o]=r,i.length===1)e.set(t,r);else{e.delete(t);for(let n of i)e.append(t,n)}}}function Kn(e){let t=null,n=null,r=!1,i=(t,n)=>{n===null?e.removeAttribute(t):n!==void 0&&e.setAttribute(t,n)},a,o,s=()=>{t?.remove(),t=null,n&&(n.hidden=!1),n=null,r&&e.classList.remove(`error`),r=!1,i(`aria-invalid`,a),i(`aria-describedby`,o),a=void 0,o=void 0};return i=>{if(!i){s();return}let c=e.closest(`.field`),l=c instanceof HTMLElement?c:null,u=l?.querySelector(`.field-error`);if(!(u&&u!==t&&u.textContent?.trim())){if(!t){if(r=!e.classList.contains(`error`),e.classList.add(`error`),a=e.getAttribute(`aria-invalid`),o=e.getAttribute(`aria-describedby`),l){t=document.createElement(`div`),t.className=`field-error`,e.id&&(t.id=`${e.id}-error`);let r=l.querySelector(`.field-hint`);n=r instanceof HTMLElement?r:null,n&&(n.hidden=!0),l.insertBefore(t,[...l.children].find(e=>e.classList.contains(`field-count`))??null),t.id&&e.setAttribute(`aria-describedby`,t.id)}e.setAttribute(`aria-invalid`,`true`)}t&&(t.textContent=i)}}}function qn(t,{mask:n,postFormatted:r=!1,onChange:i,onInvalidChange:a}={}){let o=V(n);if(!o||!R.has(t.type))return()=>{};let s=Object.getPrototypeOf(t),c=Object.getOwnPropertyDescriptor(s,`value`);if(!c?.set)throw Error(`input value setter missing`);let l=c.set,u=!t.hasAttribute(`inputmode`);u&&t.setAttribute(`inputmode`,o.inputMode);let d=a??Kn(t),f=null,p=!1,m=!1,h=!1,g=``,_=``,v,y=()=>{let e=h?g:``;e!==_&&(_=e,d(_))},b=(e,n,r)=>{let a=o.extract(e.slice(0,n)).length,s=o.extract(e),{text:c,isRaw:u}=o.layout(s);if(t.value!==c&&(l.call(t,c),document.activeElement===t&&R.has(t.type))){let e=Hn(u,a);t.setSelectionRange(e,e)}t.dataset.maskRaw=s,g=s&&!o.isValid(s)?o.message:``,t.setCustomValidity(g),y(),r&&s!==f&&i?.(s,c),f=s},x=Object.getOwnPropertyDescriptor(t,`value`),S=x??c;Object.defineProperty(t,"value",{configurable:!0,enumerable:S.enumerable,get:()=>e(S.get,`input value getter missing`).call(t),set:n=>{if(e(S.set,`input value setter missing`).call(t,n),m)return;let r=H(o,t.value);b(r,r.length,!0)}});let C=()=>{p=!0,t.dispatchEvent(new Event(`input`,{bubbles:!0})),p=!1},w=e=>{let n=e instanceof InputEvent?e:null;if(p||m||n?.isComposing)return;let r=n?.inputType===`insertText`&&(n.data?.length??0)<=1||n?.inputType?.startsWith(`delete`)?t.value:H(o,t.value);b(r,t.selectionStart??r.length,!0)},T=()=>{m=!0},E=()=>{m=!1;let e=H(o,t.value);b(e,t.selectionStart??e.length,!0),C()},D=e=>{let n=e.inputType===`deleteContentBackward`;if(!n&&e.inputType!==`deleteContentForward`||e.isComposing)return;let r=t.selectionStart;if(r==null||r!==t.selectionEnd)return;let{isRaw:i}=o.layout(o.extract(t.value)),a=n?r-1:r;for(;a>=0&&a<i.length&&!i[a];)a+=n?-1:1;a!==(n?r-1:r)&&(e.preventDefault(),a<0||a>=i.length||(b(t.value.slice(0,a)+t.value.slice(a+1),n?a:r,!0),C()))},O=e=>{if(t.readOnly||t.disabled)return;let n=e.clipboardData?.getData(`text`);if(n==null)return;e.preventDefault();let r=H(o,n),i=t.selectionStart??t.value.length,a=t.selectionEnd??i;b(t.value.slice(0,i)+r+t.value.slice(a),i+r.length,!0),C()},k=()=>{let e=o.extract(t.value);return o.post(e,o.layout(e).text)},A=()=>{h=!0,y()};t.addEventListener(`input`,w),t.addEventListener(`beforeinput`,D),t.addEventListener(`paste`,O),t.addEventListener(`compositionstart`,T),t.addEventListener(`compositionend`,E),t.addEventListener(`blur`,A),t.addEventListener(`invalid`,A);let j=t.form,M=e=>{t.name&&!t.disabled&&Gn(e.formData,t.name,t.value,k())},N=()=>{clearTimeout(v),v=setTimeout(()=>{h=!1,b(H(o,t.value),t.value.length,!0)},0)};r||(j?.addEventListener(`formdata`,M),U.set(t,k)),j?.addEventListener(`reset`,N),j?.addEventListener(`submit`,A);let P=H(o,t.value);return b(P,P.length,!1),()=>{clearTimeout(v),t.removeEventListener(`input`,w),t.removeEventListener(`beforeinput`,D),t.removeEventListener(`paste`,O),t.removeEventListener(`compositionstart`,T),t.removeEventListener(`compositionend`,E),t.removeEventListener(`blur`,A),t.removeEventListener(`invalid`,A),j?.removeEventListener(`formdata`,M),j?.removeEventListener(`reset`,N),j?.removeEventListener(`submit`,A),U.delete(t),x?Object.defineProperty(t,"value",x):Reflect.deleteProperty(t,`value`),h=!1,g=``,y(),t.setCustomValidity(``),delete t.dataset.maskRaw,u&&t.removeAttribute(`inputmode`)}}function Jn(){let e=typeof window>`u`?void 0:window.jQuery?.validator?.prototype;if(!e||e.wuiMaskHook)return;let t=e.elementValue;e.elementValue=function(e){let n=Un(e);return n===void 0?t.call(this,e):n},e.wuiMaskHook=!0}var W=/* @__PURE__ */ new WeakMap,G,Yn=e=>{W.has(e)||W.set(e,qn(e,{mask:e.dataset.appMask,postFormatted:e.hasAttribute(`data-mask-post-formatted`)}))},Xn=e=>[...e.querySelectorAll(`input[data-app-mask]`)].filter(e=>e instanceof HTMLInputElement),Zn=e=>e instanceof Element?[...e instanceof HTMLInputElement&&e.matches(`input[data-app-mask]`)?[e]:[],...Xn(e)]:[];function Qn(){G||typeof MutationObserver>`u`||(G=new MutationObserver(e=>{for(let t of e){for(let e of t.removedNodes)for(let t of Zn(e))W.get(t)?.(),W.delete(t);for(let e of t.addedNodes)for(let t of Zn(e))Yn(t)}}),G.observe(document.documentElement,{childList:!0,subtree:!0}))}function $n(e=document){Jn();for(let t of Xn(e))Yn(t);e===document&&Qn()}function er(e){if(!e)return;let t=e.querySelector(`[aria-current="page"]`);if(!t)return;let n=t.getBoundingClientRect();if(n.height===0)return;let r=e.getBoundingClientRect(),i=r.height,a=t=>t.top-r.top-e.clientTop+e.scrollTop,o=a(n),s=o+n.height,c=(t.closest(`.app-nav-group`)?.querySelector(`:scope > .app-nav-group-label`))?.getBoundingClientRect(),l;if(c&&c.height>0)l=Math.min(Math.max(a(c),s-i),o);else if(o<e.scrollTop)l=o;else if(s>e.scrollTop+i)l=s-i;else return;e.scrollTop=Math.max(0,l)}var K={minLength:10,uppercase:!0,lowercase:!0,digit:!0,special:!0,uniqueChars:0,customRules:[]},tr=`Password requirements`;function nr(e){return e===!0||e==null?{...K}:{...K,...e}}function rr(e){let t=nr(e),n=[];if(t.minLength>0&&n.push({key:`length`,label:`At least ${t.minLength} characters long`,test:e=>e.length>=t.minLength}),t.uppercase&&n.push({key:`uppercase`,label:`At least one uppercase letter`,test:e=>/[A-Z]/.test(e)}),t.lowercase&&n.push({key:`lowercase`,label:`At least one lowercase letter`,test:e=>/[a-z]/.test(e)}),t.digit&&n.push({key:`digit`,label:`At least one digit`,test:e=>/[0-9]/.test(e)}),t.special&&n.push({key:`special`,label:`At least one special character`,test:e=>/[^A-Za-z0-9]/.test(e)}),t.uniqueChars>0){let e=t.uniqueChars;n.push({key:`unique`,label:`At least ${e} unique character${e>1?`s`:``}`,test:t=>new Set(t).size>=e})}for(let[e,r]of(t.customRules??[]).entries()){let t=new RegExp(r.pattern);n.push({key:`custom-${e}`,label:r.label,test:e=>t.test(e)})}return n}function ir(e,t){let n=e==null?``:String(e);return rr(t).map(e=>({key:e.key,label:e.label,met:e.test(n)}))}function ar(e,t){return ir(e,t).every(e=>e.met)}var q=`.table-wrap, .table-responsive, [class*="table-responsive-"]`,J=1;function or(e){let t=()=>{let t=e.scrollWidth-e.clientWidth,n=Math.abs(e.scrollLeft);e.toggleAttribute(`data-wui-overflow-start`,t>J&&n>J),e.toggleAttribute(`data-wui-overflow-end`,t>J&&n<t-J),e.toggleAttribute(`data-wui-overflow-top`,e.scrollTop>J)},n=()=>{if(e.scrollWidth-e.clientWidth>J){let t=getComputedStyle(e);e.style.setProperty(`--wui-scroll-pad-start`,t.paddingInlineStart),e.style.setProperty(`--wui-scroll-pad-end`,t.paddingInlineEnd)}else e.style.getPropertyValue(`--wui-scroll-pad-end`)&&(e.style.removeProperty(`--wui-scroll-pad-start`),e.style.removeProperty(`--wui-scroll-pad-end`))},r=()=>{n(),t()};e.addEventListener(`scroll`,t,{passive:!0});let i=null;if(typeof ResizeObserver<`u`){i=new ResizeObserver(r),i.observe(e);for(let t of e.children)i.observe(t)}return r(),()=>{e.removeEventListener(`scroll`,t),i?.disconnect(),e.removeAttribute(`data-wui-overflow-start`),e.removeAttribute(`data-wui-overflow-end`),e.removeAttribute(`data-wui-overflow-top`),e.style.getPropertyValue(`--wui-scroll-pad-end`)&&(e.style.removeProperty(`--wui-scroll-pad-start`),e.style.removeProperty(`--wui-scroll-pad-end`))}}var Y=/* @__PURE__ */ new WeakMap,X,sr=e=>{Y.has(e)||Y.set(e,or(e))},cr=e=>{if(!(e instanceof HTMLElement))return[];let t=e.matches(`.table-wrap, .table-responsive, [class*="table-responsive-"]`)?[e]:[];if(e.firstElementChild===null)return t;let n=[...e.querySelectorAll(q)].filter(e=>e instanceof HTMLElement);return[...t,...n]};function lr(){X||typeof MutationObserver>`u`||(X=new MutationObserver(e=>{for(let t of e){for(let e of t.removedNodes)for(let t of cr(e))Y.get(t)?.(),Y.delete(t);for(let e of t.addedNodes)for(let t of cr(e))sr(t)}}),X.observe(document.documentElement,{childList:!0,subtree:!0}))}function ur(e=document){for(let t of e.querySelectorAll(q))t instanceof HTMLElement&&sr(t);e===document&&lr()}var dr=`data-wui-submit-once`,Z=`data-wui-submit-pending`,Q=`wui-submit-spinner`,fr=/* @__PURE__ */ new WeakSet,$=/* @__PURE__ */ new WeakMap;function pr(e){return e instanceof HTMLButtonElement||e instanceof HTMLInputElement?e:null}function mr(e){if(e.setAttribute(`aria-busy`,`true`),e.tagName===`INPUT`||e.querySelector(`.${Q}`))return;let t=e.ownerDocument.createElement(`span`);t.className=`spinner-border spinner-border-sm me-2 ${Q}`,t.setAttribute(`aria-hidden`,`true`),e.prepend(t)}function hr(e){e.removeAttribute(`aria-busy`),e.querySelector(`.${Q}`)?.remove()}function gr(e){return e.method===`post`&&e.target!==`_blank`&&e.getAttribute(`data-wui-submit-once`)!==`off`}function _r(e){let t=e.target;if(!(t instanceof HTMLFormElement)||!gr(t))return;if(t.hasAttribute(Z)){e.preventDefault();return}t.setAttribute(Z,``);let n=pr(e.submitter);setTimeout(()=>{t.hasAttribute(Z)&&(e.defaultPrevented?t.removeAttribute(Z):n&&(n.disabled=!0,mr(n),$.set(t,n)))},0)}var vr=e=>[...e.querySelectorAll(`form[${Z}]`)].filter(e=>e instanceof HTMLFormElement);function yr(e){for(let t of vr(e)){t.removeAttribute(Z);let e=$.get(t);e&&(e.disabled=!1,hr(e),$.delete(t))}}function br(e){let t=e.ownerDocument===null?e:e.ownerDocument;fr.has(t)||(fr.add(t),t.addEventListener(`submit`,_r,!0),t.defaultView?.addEventListener(`pageshow`,()=>yr(t)))}export{Yt as AVATAR_ACCEPT,Xt as AVATAR_MAX_SIZE_MB,Zt as AVATAR_OUTPUT_SIZE,Qt as AVATAR_OUTPUT_TYPE,$t as AVATAR_PREVIEW_SIZES,F as AVATAR_TEXT,_e as COLUMN_MAX_WIDTH,fe as COLUMN_MIN_WIDTH,rn as COMMAND_SHORTCUT_ATTRIBUTE,r as COMMENT_INTENTS,t as COMMENT_REACTIONS,n as COMMENT_TEXT,a as COPY_FEEDBACK_MS,x as CURRENCIES,C as CURRENCY_SYMBOLS,he as DATA_TABLE_TEXT,g as DATE_PATTERNS,T as DEFAULT_CURRENCY,pn as DEFAULT_IMAGE_ACCEPT,mn as DEFAULT_MAX_SIZE_MB,K as DEFAULT_PASSWORD_RULES,tr as DEFAULT_REQUIREMENTS_TITLE,xt as DEFAULT_THEME_EFFECT,gt as DEFAULT_THEME_STORAGE_KEY,y as DURATION_UNITS,p as EMPTY_VALUE,s as FORMAT_STYLES,De as INLINE_EDIT_SAVED_MS,Te as INLINE_EDIT_TEXT,Ee as INLINE_EDIT_TYPES,Jt as IST_TIME_ZONE,Ve as KANBAN_DRAG_THRESHOLD_PX,Ie as KANBAN_LONG_PRESS_MS,ze as KANBAN_PHONE_QUERY,Ne as KANBAN_STORAGE_PREFIX,Oe as KANBAN_SUMMARY_FORMATS,Le as KANBAN_TEXT,Be as KANBAN_TONES,Lt as LIST_KEYS,R as MASK_INPUT_TYPES,Fn as MASK_NAMES,Je as MENTION_ID_PATTERN,_ as MONEY_UNITS,nt as NOTIFICATION_COUNT_CAP,Qe as NOTIFICATION_TEXT,se as PIN_AT_VAR,ee as PIN_SIDES,ot as RELATIVE_LIMIT_DAYS,pe as RESIZE_STEP,ge as RESIZE_STEP_LARGE,ne as ROW_HEIGHTS,ue as ROW_MOVE_LIMIT,ve as ROW_MOVE_MS,re as ROW_SAVE_ATTR,ie as ROW_SAVE_ERROR_CLASS,me as ROW_SAVE_STATES,q as SCROLL_EDGE_SELECTOR,Mt as SELECT_KEY,Ft as SHORTCUTS_OFF_ATTRIBUTE,kt as SHORTCUT_EVENT,Tt as SHORTCUT_SCOPE_ATTRIBUTE,Nt as SHORTCUT_TEXT,dr as SUBMIT_ONCE_ATTRIBUTE,yt as THEME_CHANGE_EVENT,pt as THEME_EFFECTS,st as THEME_EFFECT_DURATION,_t as THEME_MODES,bt as THEME_SWITCHING_CLASS,de as VIRTUAL_OVERSCAN,En as acceptDroppedFiles,Cn as acceptLabel,ct as applyTheme,It as ariaKeyShortcuts,Dn as attachFileDrop,qn as attachInputMask,Ct as attachRowDrag,or as attachScrollEdges,nn as avatarCropOptions,tn as avatarUnreadableMessage,rr as buildPasswordRules,oe as clampColumnWidth,i as copyTextToClipboard,Ht as createLocalSeenStore,c as currencyPrefix,Bt as deriveStepStatus,ir as evaluatePassword,b as formatCompact,l as formatCurrency,m as formatDate,S as formatDateTime,u as formatDuration,bn as formatFileSize,Vn as formatMasked,d as formatNumber,v as formatPercent,it as formatRelativeTime,h as formatValue,Ce as glyphSvg,ae as groupCount,P as groupItems,et as groupNotificationsByDay,ye as identityCell,Et as inShortcutScope,un as initCommandShortcuts,$n as initInputMasks,ur as initScrollEdges,br as initSubmitOnce,we as inlineEditText,sn as isCommandChord,w as isCurrencyCode,dn as isElementDefined,en as isHeicFile,vn as isImageFile,Sn as isImageOnlyAccept,Ln as isMaskPattern,xn as isPdfFile,Wt as isTimeZone,At as isTypingTarget,ke as kanbanCardLabel,Pe as kanbanOverflow,He as kanbanStorageKey,Ae as kanbanSummaryFormat,je as kanbanVisibleLimit,Un as maskedPostValue,Vt as matchSegments,wn as matchesAccept,Se as measureRows,Ge as mentionLabel,qe as mentionTextFromValue,We as mentionValueFromText,Ue as mentionedIds,Rt as moveFocus,mt as nextTheme,Ze as notificationCountText,Ye as notificationDayHeading,$e as notificationTime,tt as notificationTriggerLabel,Xe as notificationUnreadAnnouncement,Ke as parseMentionValue,ar as passwordSatisfies,te as pinAtValue,xe as pinClasses,M as pinOffsetVar,D as planPins,be as playRowMoves,Bn as postedMasked,zn as rawMasked,N as readColumnWidths,Re as readKanbanCollapsed,St as readStoredTheme,at as relativeTimeTitle,V as resolveMask,lt as resolveTheme,er as revealActiveNavItem,k as rowLabel,O as rowOrderChanged,Dt as runShortcut,j as saveOutcomeText,le as setRowSaveState,E as settledRows,Ot as shortcutKey,Pt as shortcutName,jt as shortcutsOff,zt as stepperHeaderItems,ut as storeTheme,Fe as sumKanbanValues,wt as syncTargets,vt as themeBootScript,ht as themeKeyframes,f as timeZoneLabel,o as toInstant,Kt as todayIn,ft as transitionTheme,Tn as validateFile,ce as virtualRange,Ut as wallClockOf,dt as watchSystemTheme,fn as whenElementDefined,rt as withTrustedLabel,A as writeColumnWidths,Me as writeKanbanCollapsed,Gt as zoneOffsetMs,qt as zoneParts};
1
+ import{r as e}from"./dom-Do1pAA12.js";import{n as t,r as n,t as r}from"./commentText-BnX7rA2-.js";import{n as i,t as a}from"./copyText-DM5HhXjf.js";import{_ as o,a as s,b as c,c as l,d as u,f as d,g as f,i as p,l as m,m as h,n as g,o as _,p as v,r as y,s as b,t as x,u as S,v as C,x as w,y as T}from"./formatters-ljfITOZ3.js";import{A as E,C as D,D as O,E as k,M as A,O as j,S as M,T as N,_ as P,a as ee,b as te,c as ne,d as re,f as ie,g as ae,h as oe,i as se,j as ce,k as le,l as ue,m as de,n as fe,o as pe,p as me,r as he,s as ge,t as _e,u as ve,v as ye,w as be,x as xe,y as Se}from"./dataTable-B-7oAeii.js";import{t as Ce}from"./iconGlyphs.g-DPqoOoXy.js";import{i as we,n as Te,r as Ee,t as De}from"./inlineEditText-CsLCQbcg.js";import{a as Oe,c as ke,d as Ae,f as je,h as Me,i as Ne,l as Pe,m as Fe,n as Ie,o as Le,p as Re,r as ze,s as Be,t as Ve,u as He}from"./kanbanModel-C2IOPJ8L.js";import{a as Ue,i as We,n as Ge,o as Ke,r as qe,t as Je}from"./mentionText-BJsw_opZ.js";import{a as Ye,c as Xe,i as Ze,n as Qe,o as $e,r as et,s as tt,t as nt}from"./notificationDays-BIWczft0.js";import{o as rt}from"./optionLabel-4xjXWy74.js";import{n as it,r as at,t as ot}from"./relativeTime-BahImc8F.js";import{a as st,c as ct,d as lt,f as ut,g as dt,h as ft,i as pt,l as mt,m as ht,n as gt,o as _t,p as vt,r as yt,s as bt,t as xt,u as St,v as Ct,y as wt}from"./themeTransition-9LQC6fx8.js";import{a as Tt,c as Et,d as Dt,f as Ot,i as kt,l as At,m as jt,n as Mt,o as Nt,p as Pt,r as Ft,s as It,t as Lt,u as Rt}from"./shortcutKeys-COVLox98.js";import{n as zt,t as Bt}from"./stepperHeader-yinJ_7Dk.js";import{t as Vt}from"./textMatch-wdY7XLIc.js";import{t as Ht}from"./tourSeenStore-z0Y_Znzx.js";import{i as Ut,n as Wt,o as Gt,r as Kt,s as qt,t as Jt}from"./zone-BR02ZkHF.js";var Yt=`image/jpeg,image/png,image/webp,image/heic,image/heif,.heic,.heif`,Xt=10,Zt=512,Qt=`image/webp`,$t=[96,48],F={dialogTitle:`Edit photo`,dialogSubtitle:`Drag to position the photo, then zoom or rotate it.`,save:`Save photo`,cancel:`Cancel`,choose:`Upload photo`,change:`Change photo`,camera:`Take photo`,remove:`Remove photo`,unreadable:`That photo could not be opened. Choose a JPG, PNG or WebP image.`,heicUnreadable:`This browser cannot open HEIC photos. Choose a JPG, PNG or WebP image instead.`,cropFailed:`That photo could not be saved. Try again, or choose another one.`};function en(e){if(!e)return!1;let t=String(e.type||``).toLowerCase();return t===`image/heic`||t===`image/heif`||/\.hei[cf]$/i.test(String(e.name||``))}function tn(e){return en(e)?F.heicUnreadable:F.unreadable}function nn(e,t){let n=Number(t);return{name:e?.name||`photo`,type:Qt,size:Number.isInteger(n)&&n>0?n:512}}var rn=`data-wui-command-shortcut`,an=`k`,on=/* @__PURE__ */ new WeakSet;function sn(e,t){return!(e.ctrlKey||e.metaKey)||e.altKey||e.shiftKey||e.repeat?!1:String(e.key).toLowerCase()===String(t).toLowerCase()}function cn(e){return e.nodeType===Node.DOCUMENT_NODE}function ln(t){let n=e(window.bootstrap?.Modal,`data-wui-command-shortcut: Bootstrap's bundle (window.bootstrap) is not loaded on this page.`),r=t.closest(`.modal`);r&&n.getOrCreateInstance(r).show()}function un(e){let t=cn(e)?e:e.ownerDocument;!on.has(t)&&e.querySelector(`[data-wui-command-shortcut]`)&&(on.add(t),t.addEventListener(`keydown`,e=>{for(let n of t.querySelectorAll(`[${rn}]`))if(sn(e,n.getAttribute(`data-wui-command-shortcut`)||an)){e.preventDefault(),n.localName===`wui-command-palette`||n.classList.contains(`modal`)?ln(n):(n.focus(),`select`in n&&typeof n.select==`function`&&n.select());return}}))}function dn(e){return typeof customElements<`u`&&customElements.get(e)!==void 0}async function fn(e){await customElements.whenDefined(e)}var pn=`image/png,image/jpeg,image/webp`,mn=5,hn={"image/png":[`.png`],"image/jpeg":[`.jpg`,`.jpeg`],"image/webp":[`.webp`],"image/gif":[`.gif`],"image/svg+xml":[`.svg`],"image/heic":[`.heic`],"image/heif":[`.heif`],"application/pdf":[`.pdf`],"text/plain":[`.txt`]},gn={"image/png":`PNG`,"image/jpeg":`JPG`,"image/webp":`WEBP`,"image/gif":`GIF`,"image/svg+xml":`SVG`,"image/heic":`HEIC`,"image/heif":`HEIC`,"application/pdf":`PDF`,"text/plain":`text file`,"image/*":`images`,"video/*":`videos`,"audio/*":`audio`,".png":`PNG`,".jpg":`JPG`,".jpeg":`JPG`,".webp":`WEBP`,".gif":`GIF`,".svg":`SVG`,".heic":`HEIC`,".heif":`HEIC`,".pdf":`PDF`,".txt":`text file`},I=e=>String(e||``).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean),_n=[`.png`,`.jpg`,`.jpeg`,`.webp`,`.gif`,`.svg`,`.bmp`,`.avif`,`.heic`,`.heif`];function vn(e){if(!e)return!1;let t=typeof e==`object`&&e.type?String(e.type).toLowerCase():``;if(t)return t.startsWith(`image/`);let n=typeof e==`string`?e:e.name||e.url||``,r=String(n).toLowerCase();return _n.some(e=>r.endsWith(e))}var yn=[`KB`,`MB`,`GB`];function bn(e){if(e<1024)return`${e} B`;let t=e/1024,n=0;for(;t>=1024&&n<yn.length-1;)t/=1024,n+=1;return`${t.toFixed(1)} ${yn[n]}`}function xn(e){if(!e)return!1;let t=typeof e==`object`&&e.type?String(e.type).toLowerCase():``;if(t)return t===`application/pdf`;let n=typeof e==`string`?e:e.name||e.url||``;return String(n).toLowerCase().replace(/[?#][\s\S]*$/,``).endsWith(`.pdf`)}function Sn(e){let t=I(e);return t.length?t.every(e=>e.startsWith(`.`)?_n.includes(e):e===`image/*`||e.startsWith(`image/`)):!1}function Cn(e){let t=[];for(let n of I(e)){let e=gn[n]||(n.startsWith(`.`)?n.slice(1).toUpperCase():n.toUpperCase());t.includes(e)||t.push(e)}return t.length<=1?t[0]||`supported`:`${t.slice(0,-1).join(`, `)} or ${t[t.length-1]}`}function wn(e,t){let n=I(t);if(!n.length)return!0;let r=(e.type||``).toLowerCase(),i=(e.name||``).toLowerCase();return n.some(e=>e.startsWith(`.`)?i.endsWith(e):e.endsWith(`/*`)?r.startsWith(e.slice(0,-1)):r&&r===e?!0:!r&&(hn[e]||[]).some(e=>i.endsWith(e)))}function Tn(e,t={}){if(!e)return null;let n=t.accept===void 0?pn:t.accept,r=t.maxSizeMb===void 0?5:t.maxSizeMb;if(!wn(e,n)){let e=Cn(n),t=I(n).map(e=>[`images`,`videos`,`audio`].includes(gn[e]??``));return t.every(Boolean)?`Choose ${e}.`:t.some(Boolean)?`Choose ${e.endsWith(` file`)?`${e}s`:`${e} files`}.`:`Choose a ${e.endsWith(` file`)?e:`${e} file`}.`}return r!==null&&r>0&&e.size>r*1024*1024?`Keep the file under ${r} MB.`:null}function En(e,t){let n=Array.from(e||[]),r=t.multiple?n:n.slice(0,1),i=[],a=[];for(let e of r){let n=Tn(e,{accept:t.accept,maxSizeMb:t.maxSizeMb});n?a.push({file:e,message:n}):i.push(e)}return{files:i,rejections:a}}function Dn(e,t){let{overClass:n,isDisabled:r=()=>!1,onFiles:i,onReject:a,...o}=t,s=0,c=t=>e.classList.toggle(n,t),l=e=>{e.preventDefault(),r()||(s+=1,c(!0))},u=e=>{e.preventDefault(),r()||c(!0)},d=e=>{e.preventDefault(),r()||(s=Math.max(0,s-1),s===0&&c(!1))},f=e=>{if(e.preventDefault(),s=0,c(!1),r())return;let{files:t,rejections:n}=En(e.dataTransfer?.files,o);t.length&&i(t);let l=n[0];l&&a(l)};return e.addEventListener(`dragenter`,l),e.addEventListener(`dragover`,u),e.addEventListener(`dragleave`,d),e.addEventListener(`drop`,f),()=>{e.removeEventListener(`dragenter`,l),e.removeEventListener(`dragover`,u),e.removeEventListener(`dragleave`,d),e.removeEventListener(`drop`,f)}}var L=/[0-9]/,On={9:L,A:/[A-Za-z]/,"*":/[0-9A-Za-z]/},kn=/[9A*]/,R=/* @__PURE__ */ new Set([`text`,`tel`,`search`,`url`,`password`]),An=e=>{let t=e.replace(/\D/g,``);return t.length===12&&t.startsWith(`91`)?t.slice(2):t.length===11&&t.startsWith(`0`)?t.slice(1):e},jn=e=>{let t=Number(e.slice(0,2)),n=Number(e.slice(2,4)),r=Number(e.slice(4,8));if(r<1)return!1;let i=new Date(Date.UTC(r,n-1,t));return i.getUTCFullYear()===r&&i.getUTCMonth()===n-1&&i.getUTCDate()===t},Mn=e=>e.length<=3?e:`${e.slice(0,-3).replace(/\B(?=(\d{2})+(?!\d))/g,`,`)},${e.slice(-3)}`,Nn=e=>{let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());return t?`${t[3]}-${t[2]}-${t[1]}`:e};function z(e,{upper:t=!1,normalize:n,valid:r,post:i=e=>e,message:a=`Enter the full value`}={}){let o=[...e].map(e=>{let t=On[e];return t?{re:t}:{lit:e}}),s=o.filter(e=>e.re).length;return{inputMode:o.every(e=>!e.re||e.re===L)?`numeric`:`text`,normalize:n,post:i,message:a,extract(e){let n=``,r=0;for(let i of e){for(;r<o.length&&o[r]?.lit!==void 0&&o[r]?.lit!==i;)r++;if(r>=o.length)break;let e=o[r];e?.lit===void 0?e?.re.test(i)&&(n+=t?i.toUpperCase():i,r++):r++}return n},layout(e){let t=``,n=[],r=0;for(let i=0;i<o.length&&r<e.length;i++){let a=o[i];a?.lit===void 0?(t+=e.charAt(r++),n.push(!0)):(t+=a.lit,n.push(!1))}return{text:t,isRaw:n}},isValid:e=>e.length===s&&(!r||r(e))}}function Pn(){return{inputMode:`decimal`,post:e=>e,message:`Enter a valid amount`,extract(e){let t=``,n=!1,r=0;for(let i of e)L.test(i)?n?r<2&&(t+=i,r++):t+=i:i===`.`&&!n&&(n=!0,t+=i);return t.startsWith(`.`)&&(t=`0${t}`),t.replace(/^0+(?=\d)/,``)},layout(e){let[t=``,n]=e.split(`.`),r=Mn(t)+(e.includes(`.`)?`.${n}`:``);return{text:r,isRaw:[...r].map(e=>e!==`,`)}},isValid:e=>/^\d+(\.\d{1,2})?$/.test(e)}}var B={"phone-in":()=>z(`99999 99999`,{normalize:An,valid:e=>/^[6-9]/.test(e),message:`Enter a 10-digit mobile number`}),pan:()=>z(`AAAAA9999A`,{upper:!0,valid:e=>/^[A-Z]{5}\d{4}[A-Z]$/.test(e),message:`Enter a valid PAN`}),gstin:()=>z(`99AAAAA9999A***`,{upper:!0,valid:e=>/^\d{2}[A-Z]{5}\d{4}[A-Z][1-9A-Z]Z[0-9A-Z]$/.test(e),message:`Enter a valid GSTIN`}),aadhaar:()=>z(`9999 9999 9999`,{valid:e=>/^[2-9]/.test(e),message:`Enter a valid 12-digit Aadhaar number`}),ifsc:()=>z(`AAAA*******`,{upper:!0,valid:e=>/^[A-Z]{4}0[A-Z0-9]{6}$/.test(e),message:`Enter a valid IFSC`}),"pin-code":()=>z(`999999`,{valid:e=>/^[1-9]/.test(e),message:`Enter a valid 6-digit PIN code`}),date:()=>z(`99-99-9999`,{normalize:Nn,valid:jn,post:(e,t)=>e.length===8&&jn(e)?`${e.slice(4)}-${e.slice(2,4)}-${e.slice(0,2)}`:t,message:`Enter a valid date as DD-MM-YYYY`}),amount:Pn},Fn=Object.keys(B),In=e=>{let t=String(e).toLowerCase();return Object.hasOwn(B,t)?t:void 0},Ln=e=>kn.test(String(e))&&In(e)===void 0,Rn=/* @__PURE__ */ new Map;function V(e){if(e==null||e===``)return null;let t=String(e),n=Rn.get(t);return n===void 0&&(n=Ln(t)?z(t):Object.hasOwn(B,t)?B[t]?.()??null:null,Rn.set(t,n)),n}var H=(e,t)=>e.normalize?e.normalize(t):t;function zn(e,t){let n=V(e);return n?n.extract(H(n,String(t??``))):String(t??``)}function Bn(e,t){let n=V(e);if(!n)return String(t??``);let r=n.extract(H(n,String(t??``)));return n.post(r,n.layout(r).text)}function Vn(e,t){let n=V(e);return n?n.layout(n.extract(H(n,String(t??``)))).text:String(t??``)}var Hn=(e,t)=>{if(t<=0)return 0;let n=0;for(let r=0;r<e.length;r++)if(e[r]&&++n===t)return r+1;return e.length},U=/* @__PURE__ */ new WeakMap,Un=e=>U.get(e)?.(),Wn=/* @__PURE__ */ new WeakMap;function Gn(e,t,n,r){let i=e.getAll(t),a=Wn.get(e)??/* @__PURE__ */ new Set;Wn.set(e,a);let o=i.findIndex((e,r)=>e===n&&!a.has(`${t}\u0000${r}`));if(!(o<0)){if(a.add(`${t}\u0000${o}`),i[o]=r,i.length===1)e.set(t,r);else{e.delete(t);for(let n of i)e.append(t,n)}}}function Kn(e){let t=null,n=null,r=!1,i=(t,n)=>{n===null?e.removeAttribute(t):n!==void 0&&e.setAttribute(t,n)},a,o,s=()=>{t?.remove(),t=null,n&&(n.hidden=!1),n=null,r&&e.classList.remove(`error`),r=!1,i(`aria-invalid`,a),i(`aria-describedby`,o),a=void 0,o=void 0};return i=>{if(!i){s();return}let c=e.closest(`.field`),l=c instanceof HTMLElement?c:null,u=l?.querySelector(`.field-error`);if(!(u&&u!==t&&u.textContent?.trim())){if(!t){if(r=!e.classList.contains(`error`),e.classList.add(`error`),a=e.getAttribute(`aria-invalid`),o=e.getAttribute(`aria-describedby`),l){t=document.createElement(`div`),t.className=`field-error`,e.id&&(t.id=`${e.id}-error`);let r=l.querySelector(`.field-hint`);n=r instanceof HTMLElement?r:null,n&&(n.hidden=!0),l.insertBefore(t,[...l.children].find(e=>e.classList.contains(`field-count`))??null),t.id&&e.setAttribute(`aria-describedby`,t.id)}e.setAttribute(`aria-invalid`,`true`)}t&&(t.textContent=i)}}}function qn(t,{mask:n,postFormatted:r=!1,onChange:i,onInvalidChange:a}={}){let o=V(n);if(!o||!R.has(t.type))return()=>{};let s=Object.getPrototypeOf(t),c=Object.getOwnPropertyDescriptor(s,`value`);if(!c?.set)throw Error(`input value setter missing`);let l=c.set,u=!t.hasAttribute(`inputmode`);u&&t.setAttribute(`inputmode`,o.inputMode);let d=a??Kn(t),f=null,p=!1,m=!1,h=!1,g=``,_=``,v,y=()=>{let e=h?g:``;e!==_&&(_=e,d(_))},b=(e,n,r)=>{let a=o.extract(e.slice(0,n)).length,s=o.extract(e),{text:c,isRaw:u}=o.layout(s);if(t.value!==c&&(l.call(t,c),document.activeElement===t&&R.has(t.type))){let e=Hn(u,a);t.setSelectionRange(e,e)}t.dataset.maskRaw=s,g=s&&!o.isValid(s)?o.message:``,t.setCustomValidity(g),y(),r&&s!==f&&i?.(s,c),f=s},x=Object.getOwnPropertyDescriptor(t,`value`),S=x??c;Object.defineProperty(t,"value",{configurable:!0,...S.enumerable===void 0?{}:{enumerable:S.enumerable},get:()=>e(S.get,`input value getter missing`).call(t),set:n=>{if(e(S.set,`input value setter missing`).call(t,n),m)return;let r=H(o,t.value);b(r,r.length,!0)}});let C=()=>{p=!0,t.dispatchEvent(new Event(`input`,{bubbles:!0})),p=!1},w=e=>{let n=e instanceof InputEvent?e:null;if(p||m||n?.isComposing)return;let r=n?.inputType===`insertText`&&(n.data?.length??0)<=1||n?.inputType?.startsWith(`delete`)?t.value:H(o,t.value);b(r,t.selectionStart??r.length,!0)},T=()=>{m=!0},E=()=>{m=!1;let e=H(o,t.value);b(e,t.selectionStart??e.length,!0),C()},D=e=>{let n=e.inputType===`deleteContentBackward`;if(!n&&e.inputType!==`deleteContentForward`||e.isComposing)return;let r=t.selectionStart;if(r==null||r!==t.selectionEnd)return;let{isRaw:i}=o.layout(o.extract(t.value)),a=n?r-1:r;for(;a>=0&&a<i.length&&!i[a];)a+=n?-1:1;a!==(n?r-1:r)&&(e.preventDefault(),a<0||a>=i.length||(b(t.value.slice(0,a)+t.value.slice(a+1),n?a:r,!0),C()))},O=e=>{if(t.readOnly||t.disabled)return;let n=e.clipboardData?.getData(`text`);if(n==null)return;e.preventDefault();let r=H(o,n),i=t.selectionStart??t.value.length,a=t.selectionEnd??i;b(t.value.slice(0,i)+r+t.value.slice(a),i+r.length,!0),C()},k=()=>{let e=o.extract(t.value);return o.post(e,o.layout(e).text)},A=()=>{h=!0,y()};t.addEventListener(`input`,w),t.addEventListener(`beforeinput`,D),t.addEventListener(`paste`,O),t.addEventListener(`compositionstart`,T),t.addEventListener(`compositionend`,E),t.addEventListener(`blur`,A),t.addEventListener(`invalid`,A);let j=t.form,M=e=>{t.name&&!t.disabled&&Gn(e.formData,t.name,t.value,k())},N=()=>{clearTimeout(v),v=setTimeout(()=>{h=!1,b(H(o,t.value),t.value.length,!0)},0)};r||(j?.addEventListener(`formdata`,M),U.set(t,k)),j?.addEventListener(`reset`,N),j?.addEventListener(`submit`,A);let P=H(o,t.value);return b(P,P.length,!1),()=>{clearTimeout(v),t.removeEventListener(`input`,w),t.removeEventListener(`beforeinput`,D),t.removeEventListener(`paste`,O),t.removeEventListener(`compositionstart`,T),t.removeEventListener(`compositionend`,E),t.removeEventListener(`blur`,A),t.removeEventListener(`invalid`,A),j?.removeEventListener(`formdata`,M),j?.removeEventListener(`reset`,N),j?.removeEventListener(`submit`,A),U.delete(t),x?Object.defineProperty(t,"value",x):Reflect.deleteProperty(t,`value`),h=!1,g=``,y(),t.setCustomValidity(``),delete t.dataset.maskRaw,u&&t.removeAttribute(`inputmode`)}}function Jn(){let e=typeof window>`u`?void 0:window.jQuery?.validator?.prototype;if(!e||e.wuiMaskHook)return;let t=e.elementValue;e.elementValue=function(e){let n=Un(e);return n===void 0?t.call(this,e):n},e.wuiMaskHook=!0}var W=/* @__PURE__ */ new WeakMap,G,Yn=e=>{W.has(e)||W.set(e,qn(e,{mask:e.dataset.appMask,postFormatted:e.hasAttribute(`data-mask-post-formatted`)}))},Xn=e=>[...e.querySelectorAll(`input[data-app-mask]`)].filter(e=>e instanceof HTMLInputElement),Zn=e=>e instanceof Element?[...e instanceof HTMLInputElement&&e.matches(`input[data-app-mask]`)?[e]:[],...Xn(e)]:[];function Qn(){G||typeof MutationObserver>`u`||(G=new MutationObserver(e=>{for(let t of e){for(let e of t.removedNodes)for(let t of Zn(e))W.get(t)?.(),W.delete(t);for(let e of t.addedNodes)for(let t of Zn(e))Yn(t)}}),G.observe(document.documentElement,{childList:!0,subtree:!0}))}function $n(e=document){Jn();for(let t of Xn(e))Yn(t);e===document&&Qn()}function er(e){if(!e)return;let t=e.querySelector(`[aria-current="page"]`);if(!t)return;let n=t.getBoundingClientRect();if(n.height===0)return;let r=e.getBoundingClientRect(),i=r.height,a=t=>t.top-r.top-e.clientTop+e.scrollTop,o=a(n),s=o+n.height,c=(t.closest(`.app-nav-group`)?.querySelector(`:scope > .app-nav-group-label`))?.getBoundingClientRect(),l;if(c&&c.height>0)l=Math.min(Math.max(a(c),s-i),o);else if(o<e.scrollTop)l=o;else if(s>e.scrollTop+i)l=s-i;else return;e.scrollTop=Math.max(0,l)}var K={minLength:10,uppercase:!0,lowercase:!0,digit:!0,special:!0,uniqueChars:0,customRules:[]},tr=`Password requirements`;function nr(e){return e===!0||e==null?{...K}:{...K,...e}}function rr(e){let t=nr(e),n=[];if(t.minLength>0&&n.push({key:`length`,label:`At least ${t.minLength} characters long`,test:e=>e.length>=t.minLength}),t.uppercase&&n.push({key:`uppercase`,label:`At least one uppercase letter`,test:e=>/[A-Z]/.test(e)}),t.lowercase&&n.push({key:`lowercase`,label:`At least one lowercase letter`,test:e=>/[a-z]/.test(e)}),t.digit&&n.push({key:`digit`,label:`At least one digit`,test:e=>/[0-9]/.test(e)}),t.special&&n.push({key:`special`,label:`At least one special character`,test:e=>/[^A-Za-z0-9]/.test(e)}),t.uniqueChars>0){let e=t.uniqueChars;n.push({key:`unique`,label:`At least ${e} unique character${e>1?`s`:``}`,test:t=>new Set(t).size>=e})}for(let[e,r]of(t.customRules??[]).entries()){let t=new RegExp(r.pattern);n.push({key:`custom-${e}`,label:r.label,test:e=>t.test(e)})}return n}function ir(e,t){let n=e==null?``:String(e);return rr(t).map(e=>({key:e.key,label:e.label,met:e.test(n)}))}function ar(e,t){return ir(e,t).every(e=>e.met)}var q=`.table-wrap, .table-responsive, [class*="table-responsive-"]`,J=1;function or(e){let t=()=>{let t=e.scrollWidth-e.clientWidth,n=Math.abs(e.scrollLeft);e.toggleAttribute(`data-wui-overflow-start`,t>J&&n>J),e.toggleAttribute(`data-wui-overflow-end`,t>J&&n<t-J),e.toggleAttribute(`data-wui-overflow-top`,e.scrollTop>J)},n=()=>{if(e.scrollWidth-e.clientWidth>J){let t=getComputedStyle(e);e.style.setProperty(`--wui-scroll-pad-start`,t.paddingInlineStart),e.style.setProperty(`--wui-scroll-pad-end`,t.paddingInlineEnd)}else e.style.getPropertyValue(`--wui-scroll-pad-end`)&&(e.style.removeProperty(`--wui-scroll-pad-start`),e.style.removeProperty(`--wui-scroll-pad-end`))},r=()=>{n(),t()};e.addEventListener(`scroll`,t,{passive:!0});let i=null;if(typeof ResizeObserver<`u`){i=new ResizeObserver(r),i.observe(e);for(let t of e.children)i.observe(t)}return r(),()=>{e.removeEventListener(`scroll`,t),i?.disconnect(),e.removeAttribute(`data-wui-overflow-start`),e.removeAttribute(`data-wui-overflow-end`),e.removeAttribute(`data-wui-overflow-top`),e.style.getPropertyValue(`--wui-scroll-pad-end`)&&(e.style.removeProperty(`--wui-scroll-pad-start`),e.style.removeProperty(`--wui-scroll-pad-end`))}}var Y=/* @__PURE__ */ new WeakMap,X,sr=e=>{Y.has(e)||Y.set(e,or(e))},cr=e=>{if(!(e instanceof HTMLElement))return[];let t=e.matches(`.table-wrap, .table-responsive, [class*="table-responsive-"]`)?[e]:[];if(e.firstElementChild===null)return t;let n=[...e.querySelectorAll(q)].filter(e=>e instanceof HTMLElement);return[...t,...n]};function lr(){X||typeof MutationObserver>`u`||(X=new MutationObserver(e=>{for(let t of e){for(let e of t.removedNodes)for(let t of cr(e))Y.get(t)?.(),Y.delete(t);for(let e of t.addedNodes)for(let t of cr(e))sr(t)}}),X.observe(document.documentElement,{childList:!0,subtree:!0}))}function ur(e=document){for(let t of e.querySelectorAll(q))t instanceof HTMLElement&&sr(t);e===document&&lr()}var dr=`data-wui-submit-once`,Z=`data-wui-submit-pending`,Q=`wui-submit-spinner`,fr=/* @__PURE__ */ new WeakSet,$=/* @__PURE__ */ new WeakMap;function pr(e){return e instanceof HTMLButtonElement||e instanceof HTMLInputElement?e:null}function mr(e){if(e.setAttribute(`aria-busy`,`true`),e.tagName===`INPUT`||e.querySelector(`.${Q}`))return;let t=e.ownerDocument.createElement(`span`);t.className=`spinner-border spinner-border-sm me-2 ${Q}`,t.setAttribute(`aria-hidden`,`true`),e.prepend(t)}function hr(e){e.removeAttribute(`aria-busy`),e.querySelector(`.${Q}`)?.remove()}function gr(e){return e.method===`post`&&e.target!==`_blank`&&e.getAttribute(`data-wui-submit-once`)!==`off`}function _r(e){let t=e.target;if(!(t instanceof HTMLFormElement)||!gr(t))return;if(t.hasAttribute(Z)){e.preventDefault();return}t.setAttribute(Z,``);let n=pr(e.submitter);setTimeout(()=>{t.hasAttribute(Z)&&(e.defaultPrevented?t.removeAttribute(Z):n&&(n.disabled=!0,mr(n),$.set(t,n)))},0)}var vr=e=>[...e.querySelectorAll(`form[${Z}]`)].filter(e=>e instanceof HTMLFormElement);function yr(e){for(let t of vr(e)){t.removeAttribute(Z);let e=$.get(t);e&&(e.disabled=!1,hr(e),$.delete(t))}}function br(e){let t=e.ownerDocument===null?e:e.ownerDocument;fr.has(t)||(fr.add(t),t.addEventListener(`submit`,_r,!0),t.defaultView?.addEventListener(`pageshow`,()=>yr(t)))}export{Yt as AVATAR_ACCEPT,Xt as AVATAR_MAX_SIZE_MB,Zt as AVATAR_OUTPUT_SIZE,Qt as AVATAR_OUTPUT_TYPE,$t as AVATAR_PREVIEW_SIZES,F as AVATAR_TEXT,_e as COLUMN_MAX_WIDTH,fe as COLUMN_MIN_WIDTH,rn as COMMAND_SHORTCUT_ATTRIBUTE,r as COMMENT_INTENTS,t as COMMENT_REACTIONS,n as COMMENT_TEXT,a as COPY_FEEDBACK_MS,x as CURRENCIES,C as CURRENCY_SYMBOLS,he as DATA_TABLE_TEXT,g as DATE_PATTERNS,T as DEFAULT_CURRENCY,pn as DEFAULT_IMAGE_ACCEPT,mn as DEFAULT_MAX_SIZE_MB,K as DEFAULT_PASSWORD_RULES,tr as DEFAULT_REQUIREMENTS_TITLE,xt as DEFAULT_THEME_EFFECT,gt as DEFAULT_THEME_STORAGE_KEY,y as DURATION_UNITS,p as EMPTY_VALUE,s as FORMAT_STYLES,De as INLINE_EDIT_SAVED_MS,Te as INLINE_EDIT_TEXT,Ee as INLINE_EDIT_TYPES,Jt as IST_TIME_ZONE,Ve as KANBAN_DRAG_THRESHOLD_PX,Ie as KANBAN_LONG_PRESS_MS,ze as KANBAN_PHONE_QUERY,Ne as KANBAN_STORAGE_PREFIX,Oe as KANBAN_SUMMARY_FORMATS,Le as KANBAN_TEXT,Be as KANBAN_TONES,Lt as LIST_KEYS,R as MASK_INPUT_TYPES,Fn as MASK_NAMES,Je as MENTION_ID_PATTERN,_ as MONEY_UNITS,nt as NOTIFICATION_COUNT_CAP,Qe as NOTIFICATION_TEXT,se as PIN_AT_VAR,ee as PIN_SIDES,ot as RELATIVE_LIMIT_DAYS,pe as RESIZE_STEP,ge as RESIZE_STEP_LARGE,ne as ROW_HEIGHTS,ue as ROW_MOVE_LIMIT,ve as ROW_MOVE_MS,re as ROW_SAVE_ATTR,ie as ROW_SAVE_ERROR_CLASS,me as ROW_SAVE_STATES,q as SCROLL_EDGE_SELECTOR,Mt as SELECT_KEY,Ft as SHORTCUTS_OFF_ATTRIBUTE,kt as SHORTCUT_EVENT,Tt as SHORTCUT_SCOPE_ATTRIBUTE,Nt as SHORTCUT_TEXT,dr as SUBMIT_ONCE_ATTRIBUTE,yt as THEME_CHANGE_EVENT,pt as THEME_EFFECTS,st as THEME_EFFECT_DURATION,_t as THEME_MODES,bt as THEME_SWITCHING_CLASS,de as VIRTUAL_OVERSCAN,En as acceptDroppedFiles,Cn as acceptLabel,ct as applyTheme,It as ariaKeyShortcuts,Dn as attachFileDrop,qn as attachInputMask,Ct as attachRowDrag,or as attachScrollEdges,nn as avatarCropOptions,tn as avatarUnreadableMessage,rr as buildPasswordRules,oe as clampColumnWidth,i as copyTextToClipboard,Ht as createLocalSeenStore,c as currencyPrefix,Bt as deriveStepStatus,ir as evaluatePassword,b as formatCompact,l as formatCurrency,m as formatDate,S as formatDateTime,u as formatDuration,bn as formatFileSize,Vn as formatMasked,d as formatNumber,v as formatPercent,it as formatRelativeTime,h as formatValue,Ce as glyphSvg,ae as groupCount,P as groupItems,et as groupNotificationsByDay,ye as identityCell,Et as inShortcutScope,un as initCommandShortcuts,$n as initInputMasks,ur as initScrollEdges,br as initSubmitOnce,we as inlineEditText,sn as isCommandChord,w as isCurrencyCode,dn as isElementDefined,en as isHeicFile,vn as isImageFile,Sn as isImageOnlyAccept,Ln as isMaskPattern,xn as isPdfFile,Wt as isTimeZone,At as isTypingTarget,ke as kanbanCardLabel,Pe as kanbanOverflow,He as kanbanStorageKey,Ae as kanbanSummaryFormat,je as kanbanVisibleLimit,Un as maskedPostValue,Vt as matchSegments,wn as matchesAccept,Se as measureRows,Ge as mentionLabel,qe as mentionTextFromValue,We as mentionValueFromText,Ue as mentionedIds,Rt as moveFocus,mt as nextTheme,Ze as notificationCountText,Ye as notificationDayHeading,$e as notificationTime,tt as notificationTriggerLabel,Xe as notificationUnreadAnnouncement,Ke as parseMentionValue,ar as passwordSatisfies,te as pinAtValue,xe as pinClasses,M as pinOffsetVar,D as planPins,be as playRowMoves,Bn as postedMasked,zn as rawMasked,N as readColumnWidths,Re as readKanbanCollapsed,St as readStoredTheme,at as relativeTimeTitle,V as resolveMask,lt as resolveTheme,er as revealActiveNavItem,k as rowLabel,O as rowOrderChanged,Dt as runShortcut,j as saveOutcomeText,le as setRowSaveState,E as settledRows,Ot as shortcutKey,Pt as shortcutName,jt as shortcutsOff,zt as stepperHeaderItems,ut as storeTheme,Fe as sumKanbanValues,wt as syncTargets,vt as themeBootScript,ht as themeKeyframes,f as timeZoneLabel,o as toInstant,Kt as todayIn,ft as transitionTheme,Tn as validateFile,ce as virtualRange,Ut as wallClockOf,dt as watchSystemTheme,fn as whenElementDefined,rt as withTrustedLabel,A as writeColumnWidths,Me as writeKanbanCollapsed,Gt as zoneOffsetMs,qt as zoneParts};
@@ -1 +1 @@
1
- import{o as e}from"./calendarMath-D6UUgYTD.js";import"./formatters-C3V6M5zV.js";var t=Object.freeze([`text`,`number`,`select`,`date`,`textarea`]),n=2e3,r=Object.freeze({edit:e=>`Edit ${e}: `,readOnly:e=>`${e}: `,saved:e=>`${e} saved.`,notSaved:(e,t)=>`${e} was not saved. ${t}`,failed:Object.freeze({forbidden:`You do not have permission to change this.`,client:`This could not be saved. Refresh the page and try again.`,validation:`This value was not accepted. Check it and try again.`,server:`Something went wrong on our side, so this was not saved. Try again in a moment.`,network:`Could not reach the server, so this was not saved. Check your connection and try again.`})});function i(t,{type:n=`text`,options:r,placeholder:i}={}){let a=t==null?``:String(t);if(a===``)return{text:i||`-`,empty:!0};if(n===`date`)return{text:e(a)||a,empty:!1};if(n===`select`){let e=r?.find(e=>String(e.value)===a);return{text:typeof e?.label==`string`?e.label:a,empty:!1}}return{text:a,empty:!1}}export{i,r as n,t as r,n as t};
1
+ import{o as e}from"./calendarMath-D6UUgYTD.js";import"./formatters-ljfITOZ3.js";var t=Object.freeze([`text`,`number`,`select`,`date`,`textarea`]),n=2e3,r=Object.freeze({edit:e=>`Edit ${e}: `,readOnly:e=>`${e}: `,saved:e=>`${e} saved.`,notSaved:(e,t)=>`${e} was not saved. ${t}`,failed:Object.freeze({forbidden:`You do not have permission to change this.`,client:`This could not be saved. Refresh the page and try again.`,validation:`This value was not accepted. Check it and try again.`,server:`Something went wrong on our side, so this was not saved. Try again in a moment.`,network:`Could not reach the server, so this was not saved. Check your connection and try again.`})});function i(t,{type:n=`text`,options:r,placeholder:i}={}){let a=t==null?``:String(t);if(a===``)return{text:i||`-`,empty:!0};if(n===`date`)return{text:e(a)||a,empty:!1};if(n===`select`){let e=r?.find(e=>String(e.value)===a);return{text:typeof e?.label==`string`?e.label:a,empty:!1}}return{text:a,empty:!1}}export{i,r as n,t as r,n as t};
@@ -1 +1 @@
1
- import{n as e,t}from"./devWarn-DXdRWZs3.js";import{t as n}from"./elementBase-Cxeyx0tU.js";import{m as r}from"./formatters-C3V6M5zV.js";import{c as i,d as a,f as o,h as s,l as c,m as l,o as u,p as d}from"./kanbanModel-BdqSa1lJ.js";import{l as f}from"./wuiHttp-523iN_RF.js";var p=u.failed,m=`[data-wui-column]`,h=`[data-wui-body]`,g=`[data-wui-card]`,_=`[data-wui-count]`,v=`[data-wui-summary]`,y=`[data-wui-empty]`,b=`[data-wui-drop-note]`,x=`[data-wui-live]`,S=`[data-wui-help]`,C=`[data-wui-switch]`,w=`[data-wui-scroller]`,T=`[data-wui-collapse]`,E=`[data-wui-more]`,D=`data-wui-visible-limit`,O=`data-wui-overflow`,k=`input, select, textarea, [contenteditable=""], [contenteditable="true"], [data-wui-no-drag]`,A=`[data-wui-load-more]`,j=`data-wui-more-url`,M=`data-wui-total`,N=`data-wui-unloaded`,P=48,F=16,I=160,L=e=>e.getAttribute(`data-wui-column`),R=e=>e.getAttribute(`data-wui-card`),z=e=>e instanceof HTMLElement&&!!e.hidden||e.hasAttribute(`hidden`),B=e=>z(e)||e.hasAttribute(O),V=e=>e instanceof Element?e:null,H=e=>typeof e==`object`&&e&&`name`in e?e.name:void 0,U=e=>typeof e==`object`&&e&&`message`in e?e.message:void 0,W=(e,t,n)=>{let r=e.querySelector(t);return r instanceof n?r:null},G=(e,t,n)=>[...e.querySelectorAll(t)].filter(e=>e instanceof n),K=(e,t,n)=>{let r=e.closest(t);return r instanceof n?r:null},q=()=>window.WUI??null,J=(e,t)=>{e&&q()?.toast(e,{variant:t})},Y=class extends n{constructor(){super(),this._wired=!1,this._filter=null,this._expanded=/* @__PURE__ */ new Set,this._revealed=/* @__PURE__ */ new Set,this._press=null,this._drag=null,this._kbd=null,this._suppressClick=!1,this._observer=null,this._refreshQueued=!1,this._scrollTimer=0,this._onPointerMove=e=>this._pointerMove(e),this._onPointerUp=e=>this._pointerUp(e),this._onPointerCancel=()=>this._endPointer(!1),this._onDocKeyDown=e=>{e.key===`Escape`&&this._drag&&(e.preventDefault(),this._endPointer(!1))},this._onScroll=()=>{clearTimeout(this._scrollTimer),this._scrollTimer=setTimeout(()=>this._syncSwitcherFromScroll(),80)},this.addEventListener(`pointerdown`,e=>this._pointerDown(e)),this.addEventListener(`keydown`,e=>this._keyDown(e)),this.addEventListener(`click`,e=>this._click(e),!0),this.addEventListener(`scroll`,e=>{e.target instanceof Element&&this._loadOnScroll(e.target)},!0),this.addEventListener(`dragstart`,e=>{V(e.target)?.closest(g)&&e.preventDefault()}),this.addEventListener(`touchmove`,e=>{this._drag&&e.preventDefault()},{passive:!1})}_controlled(){return this.hasAttribute(`controlled`)}connectedCallback(){if(!this._wired){this._wired=!0,this._scroller()?.addEventListener(`scroll`,this._onScroll,{passive:!0}),this._restoreCollapsed();for(let e of this._allCards())this._prepareCard(e);if(typeof MutationObserver==`function`){this._observer=new MutationObserver(e=>{for(let t of e)for(let e of t.addedNodes)e instanceof HTMLElement&&e.matches(g)&&this._prepareCard(e);this._queueRefresh()});for(let e of this.querySelectorAll(h))this._observer.observe(e,{childList:!0})}this.refresh()}}disconnectedCallback(){this._endPointer(!1),this._observer?.disconnect(),this._observer=null,this._scroller()?.removeEventListener(`scroll`,this._onScroll),clearTimeout(this._scrollTimer),this._wired=!1}setFilter(e){if(e!=null&&typeof e!=`function`)throw TypeError(`wui-kanban setFilter: pass a function or null.`);if(this._filter=e,!e)for(let e of this._allCards())e.hidden=!1;this.refresh()}refresh(){if(this._controlled())return;this._refreshQueued=!1;let e=this._summaryFormat();for(let t of this._columns()){let n=L(t),i=o(t.getAttribute(D)),a=[],s=[];for(let e of this._cardsIn(t))this._filter&&(e.hidden=this._filter(e)===!1),z(e)?e.removeAttribute(O):(a.push(e),s.push(e.getAttribute(`data-wui-value`)));let d=this._expanded.has(n),f=c(a.map(R),i,d,this._revealed);for(let e of a)e.toggleAttribute(O,f.has(R(e)));let p=this._unloadedIn(t),m=String(a.length+p);for(let e of this._countsOf(t))e.textContent!==m&&(e.textContent=m);let h=W(t,y,HTMLElement);if(h&&(h.hidden=a.length>0),e){let n=t.querySelector(v);n&&(n.textContent=r(l(s),e))}let g=W(t,E,HTMLElement);if(g){g.hidden=i==null||(d?a.length<=i:f.size===0),g.setAttribute(`aria-expanded`,d?`true`:`false`);let e=d?u.fewer:u.more(f.size);g.textContent!==e&&(g.textContent=e)}let _=W(t,A,HTMLButtonElement);if(_&&(_.hidden=p<=0,!t.hasAttribute(`data-wui-loading`))){_.disabled=!1;let e=u.loadMore(p);_.textContent!==e&&(_.textContent=e)}}}moveCard(e,t,n){let r=this._cardByKey(e);if(!r)throw Error(`wui-kanban moveCard: no card "${String(e)}" on this board.`);if(!this._columnByKey(t))throw Error(`wui-kanban moveCard: no column "${String(t)}" on this board.`);return this._commit(r,t,n)}_columns(){return G(this,m,HTMLElement)}_columnByKey(e){return this._columns().find(t=>L(t)===e)||null}_columnOf(e){return K(e,m,HTMLElement)}_titleOf(e){return(e.querySelector(`.wui-kanban-title`)?.textContent||L(e)||``).replace(/\s+/g,` `).trim()}_bodyOf(e){return W(e,h,HTMLElement)}_cardsIn(e){let t=this._bodyOf(e);return t?[...t.children].filter(e=>e instanceof HTMLElement&&e.matches(g)):[]}_visibleCardsIn(e){return this._cardsIn(e).filter(e=>!B(e))}_allCards(){return G(this,`${h} > ${g}`,HTMLElement)}_cardByKey(e){return this._allCards().find(t=>R(t)===e)||null}_countsOf(e){let t=L(e),n=[...this.querySelectorAll(C)].filter(e=>e.getAttribute(`data-wui-switch`)===t);return[...e.querySelectorAll(_),...n.flatMap(e=>[...e.querySelectorAll(_)])]}_scroller(){return W(this,w,HTMLElement)}_summaryFormat(){let e=this.getAttribute(`summary-format`);return e?a(e,this.getAttribute(`summary-unit`)):null}_queueRefresh(){this._refreshQueued||(this._refreshQueued=!0,queueMicrotask(()=>{this._refreshQueued&&this.refresh()}))}_prepareCard(e){let t=this.querySelector(S);t?.id&&!e.hasAttribute(`aria-describedby`)&&e.setAttribute(`aria-describedby`,t.id),e.hasAttribute(`tabindex`)||(e.tabIndex=0)}_announce(e){let t=W(this,x,HTMLElement);t&&e&&(t.textContent=``,t.textContent=e)}_fire(e,t,n=!1){return this.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:n,detail:t}))}_canLift(e){let t=i(e),n=this.hasAttribute(`readonly`);return n||e.hasAttribute(`data-wui-locked`)?(this._announce(u.locked(t)),this._fire(`wui:kanban:locked`,{key:R(e),card:e,reason:n?`readonly`:`locked`},!0),!1):e.getAttribute(`aria-busy`)!==`true`||(this._announce(u.busy),J(u.busy,`info`),!1)}_check(e,t,n){if(t===n)return{ok:!1,source:!0,reason:null};let r=this._columnByKey(t),i=this._columnByKey(n),a=u.refused(r?this._titleOf(r):String(t),i?this._titleOf(i):String(n)),o=i?.getAttribute(`data-accept-from`),s=o?.split(/\s+/).filter(Boolean)??[];if(o!=null&&!s.includes(t))return{ok:!1,reason:a};if(typeof this.accept==`function`){let r=this.accept(e,t,n);if(r===!1)return{ok:!1,reason:a};if(typeof r==`string`&&r)return{ok:!1,reason:r}}return{ok:!0,reason:null}}_markTargets(e,t){let n=i(e),r=/* @__PURE__ */ new Map;for(let i of this._columns()){let a=L(i),o=this._check(e,t,a);r.set(a,o),i.setAttribute(`data-wui-drop`,o.source?`source`:o.ok?`ok`:`refused`);let s=W(i,b,HTMLElement);s&&!o.source&&(s.textContent=o.ok?u.dropHere(n,this._titleOf(i)):o.reason,s.hidden=!1)}return r}_clearTargets(){for(let e of this._columns()){e.removeAttribute(`data-wui-drop`),e.removeAttribute(`data-wui-over`),e.removeAttribute(`data-wui-target`);let t=W(e,b,HTMLElement);t&&(t.hidden=!0,t.textContent=``)}}async _commit(e,t,n){let r=this._columnOf(e);if(!r)throw Error(`wui-kanban: the card is not inside a column.`);let a=L(r),o=this._columnByKey(t),s=i(e);if(a===t||!this._canLift(e))return!1;let c=this._check(e,a,t);if(!c.ok)return this._announce(c.reason),J(c.reason,`info`),!1;if(!o)throw Error(`wui-kanban: no column "${String(t)}" on this board.`);let l=this._cardsIn(o),d=Number.isInteger(n)?Math.max(0,Math.min(n??0,l.length)):l.length,m={key:R(e),card:e,from:a,to:t,index:d},h=e.contains(document.activeElement);if(this._controlled())return this._fire(`wui:kanban:move`,m),this._announce(u.moved(s,this._titleOf(o))),h&&this._refocusSoon(m.key),!0;if(!this._fire(`wui:kanban:move`,m,!0))return!1;let g=o.hasAttribute(D)&&!this._revealed.has(m.key);g&&this._revealed.add(m.key);let _={parent:e.parentNode,next:e.nextSibling,column:r,revealed:g},v=this._bodyOf(o);if(!v)throw Error(`wui-kanban: the target column has no body.`);v.insertBefore(e,l[d]||null),h&&this._focusMoved(e),this.refresh();let y=o.getAttribute(`data-wui-step`);if(y)return this._runStep(e,m,_,y,o.getAttribute(`data-wui-step-size`));let b=this.getAttribute(`move-url`);if(!b)return this._announce(u.moved(s,this._titleOf(o))),this._fire(`wui:kanban:moved`,{...m,result:null}),!0;this._lock(e,!0),this._announce(u.saving(s,this._titleOf(o)));let x=new URLSearchParams({card:String(m.key),from:String(a),to:String(t),index:String(d)}),S=await f(b,{method:`POST`,body:x});if(this._lock(e,!1),S.kind===`session`)return!1;if(S.ok){let t=this._applyFragment(S.html)||e;return J(S.message,`success`),this._announce(u.moved(i(t),this._titleOf(o))),this._fire(`wui:kanban:moved`,{...m,card:t,result:S}),!0}return this._rollback(e,_),S.kind!==`aborted`&&J(S.message||p[S.kind]||u.failed.server,`danger`),this._fire(`wui:kanban:failed`,{...m,kind:S.kind,status:S.status,message:S.message}),!1}async _runStep(e,t,n,r,a){let o=i(e),s=this._columnByKey(t.to),c=new URLSearchParams({card:String(t.key),from:String(t.from),to:String(t.to)}).toString(),l=r+(r.includes(`?`)?`&`:`?`)+c;this._lock(e,!0);let d;try{let t=window.WUI?.modal?.load;if(typeof t!=`function`)throw Error(`<wui-kanban> data-wui-step needs the Razor script webority-ui.js (WUI.modal.load).`);d=await(await t(l,{trigger:e,size:a||void 0})).closed}catch(r){return this._lock(e,!1),this._rollback(e,n),H(r)!==`AbortError`&&J(u.failed.server,`danger`),this._fire(`wui:kanban:failed`,{...t,kind:`step`,status:0,message:U(r)??null}),!1}if(d?.status!==`success`)return this._lock(e,!1),this._rollback(e,n),this._announce(u.cancelled(o)),this._fire(`wui:kanban:failed`,{...t,kind:`dismissed`,status:0,message:null}),!1;let p=e,m=this.getAttribute(`card-url`);if(m){let n=await f(`${m}${m.includes(`?`)?`&`:`?`}${new URLSearchParams({card:String(t.key)})}`);n.ok&&(p=this._applyFragment(n.html)||e)}if(this._lock(p,!1),!s)throw Error(`wui-kanban: no column "${String(t.to)}" on this board.`);return this._announce(u.moved(i(p),this._titleOf(s))),this._fire(`wui:kanban:moved`,{...t,card:p,result:d}),!0}_lock(e,t){t?(e.setAttribute(`aria-busy`,`true`),e.setAttribute(`data-wui-saving`,``)):(e.removeAttribute(`aria-busy`),e.removeAttribute(`data-wui-saving`))}_rollback(e,t){let n=e.contains(document.activeElement),r=t.next&&t.next.parentNode===t.parent?t.next:null;if(t.revealed&&this._revealed.delete(R(e)),!t.parent)throw Error(`wui-kanban: the card had no parent to go back to.`);t.parent.insertBefore(e,r),n&&e.focus(),this.refresh(),this._announce(u.rolledBack(i(e),this._titleOf(t.column)))}_applyFragment(t){if(!t)return null;let n=document.createElement(`template`);n.innerHTML=t;for(let t of n.content.querySelectorAll(`script`))e(`[@webority/ui-elements] A kanban fragment carried a script tag; it was removed, not run.`),t.remove();let r=null;for(let e of G(n.content,g,HTMLElement)){if(e.closest(`template`))continue;let t=this._cardByKey(R(e));if(!t)continue;let n=t.contains(document.activeElement);t.dispatchEvent(new CustomEvent(`wui:teardown`,{bubbles:!0})),t.hidden&&(e.hidden=!0),t.replaceWith(e),this._prepareCard(e),n&&e.focus(),r??=e}for(let e of G(n.content,`template[data-wui-kanban-summary]`,HTMLTemplateElement))this._columnByKey(e.getAttribute(`data-wui-kanban-summary`))?.querySelector(v)?.replaceChildren(e.content.cloneNode(!0));return this.refresh(),q()?.refresh(),r}_refocusSoon(e){let t=()=>{let t=this._cardByKey(e);t&&this._focusMoved(t)};typeof requestAnimationFrame==`function`?requestAnimationFrame(t):setTimeout(t,0)}_focusMoved(e){e.focus({preventScroll:!0}),e.scrollIntoView?.({block:`nearest`})}_pointerDown(e){if(e.button!==0||e.isPrimary===!1||this._drag||this._kbd)return;let t=V(e.target),n=t?K(t,g,HTMLElement):null;if(!n||!this.contains(n)||t?.closest(k))return;let r={card:n,id:e.pointerId,x:e.clientX,y:e.clientY,type:e.pointerType,timer:0};this._press=r,e.pointerType===`touch`&&(r.timer=setTimeout(()=>{this._press===r&&this._startDrag(r,r.x,r.y)},400)),window.addEventListener(`pointermove`,this._onPointerMove),window.addEventListener(`pointerup`,this._onPointerUp),window.addEventListener(`pointercancel`,this._onPointerCancel)}_pointerMove(e){let t=this._press;if(t&&e.pointerId===t.id){if(!this._drag){if(!(Math.hypot(e.clientX-t.x,e.clientY-t.y)>6))return;if(t.type===`touch`){this._endPointer(!1);return}if(this._startDrag(t,e.clientX,e.clientY),!this._drag)return}this._dragTo(e.clientX,e.clientY)}}_pointerUp(e){this._press&&e.pointerId===this._press.id&&this._endPointer(!!this._drag)}_startDrag(e,t,n){let r=e.card;if(!this._canLift(r)){this._endPointer(!1);return}let a=this._columnOf(r);if(!a)throw Error(`wui-kanban: the card is not inside a column.`);let o=L(a),s=r.getBoundingClientRect(),c=r.cloneNode(!0);if(!(c instanceof HTMLElement))return;let l=c;for(let e of[l,...l.querySelectorAll(`[id]`)])e.removeAttribute(`id`);l.removeAttribute(`data-wui-card`),l.removeAttribute(`tabindex`),l.setAttribute(`aria-hidden`,`true`),l.classList.add(`wui-kanban-ghost`),l.style.width=`${s.width}px`,this.appendChild(l),r.setAttribute(`data-wui-dragging`,``),this.setAttribute(`data-wui-dragging`,``),this._drag={card:r,from:o,ghost:l,dx:t-s.left,dy:n-s.top,x:t,y:n,over:null,verdicts:this._markTargets(r,o)},this._announce(u.lifted(i(r),this._titleOf(a))),document.addEventListener(`keydown`,this._onDocKeyDown),this._dragTo(t,n)}_dragTo(e,t){let n=this._drag;if(!n)throw Error(`wui-kanban: no drag in progress.`);n.x=e,n.y=t,n.ghost.style.transform=`translate(${e-n.dx}px, ${t-n.dy}px)`;let r=this._columnAt(e,t);r!==n.over&&(n.over?.removeAttribute(`data-wui-over`),r?.setAttribute(`data-wui-over`,``),n.over=r),this._autoScroll(e,t,r)}_columnAt(e,t){for(let n of this._columns()){let r=n.getBoundingClientRect();if(e>=r.left&&e<=r.right&&t>=r.top&&t<=r.bottom)return n}return null}_indexAt(e,t){let n=this._visibleCardsIn(e).filter(e=>e!==this._drag?.card).find(e=>{let n=e.getBoundingClientRect();return t<n.top+n.height/2}),r=this._cardsIn(e).filter(e=>e!==this._drag?.card);return n?r.indexOf(n):r.length}_autoScroll(e,t,n){let r=this._scroller();if(r){let t=r.getBoundingClientRect();t.width>0&&(e<t.left+P?r.scrollBy?.({left:-16}):e>t.right-P&&r.scrollBy?.({left:F}))}if(n&&this._scrollColumn(n,t))return;let i=window.innerHeight||0;i>0&&(t<P?window.scrollBy?.({top:-16}):t>i-P&&window.scrollBy?.({top:F}))}_scrollColumn(e,t){let n=this._bodyOf(e);if(!n||e.hasAttribute(`data-collapsed`)||n.scrollHeight<=n.clientHeight)return!1;let r=n.getBoundingClientRect();return t<r.top+P&&n.scrollTop>0?(n.scrollBy?.({top:-16}),!0):t>r.bottom-P&&n.scrollTop+n.clientHeight<n.scrollHeight-1&&(n.scrollBy?.({top:F}),!0)}_endPointer(e){let t=this._press,n=this._drag;if(t&&clearTimeout(t.timer||void 0),this._press=null,this._drag=null,window.removeEventListener(`pointermove`,this._onPointerMove),window.removeEventListener(`pointerup`,this._onPointerUp),window.removeEventListener(`pointercancel`,this._onPointerCancel),document.removeEventListener(`keydown`,this._onDocKeyDown),!n)return;n.ghost.remove(),n.card.removeAttribute(`data-wui-dragging`),this.removeAttribute(`data-wui-dragging`),this._suppressClick=!0,setTimeout(()=>{this._suppressClick=!1},0);let r=n.over;if(this._clearTargets(),!e||!r){this._announce(u.cancelled(i(n.card)));return}let a=L(r),o=n.verdicts.get(a);o?.source?this._announce(u.cancelled(i(n.card))):o?.ok?this._commit(n.card,a,this._indexAt(r,n.y)):(this._announce(o?.reason),J(o?.reason,`info`))}_click(e){let t=V(e.target);if(this._suppressClick&&t?.closest(g)){e.preventDefault(),e.stopPropagation(),this._suppressClick=!1;return}let n=t?.closest(T);if(n&&this.contains(n)){let e=K(n,m,HTMLElement);e&&this._setCollapsed(e,!e.hasAttribute(`data-collapsed`),!0);return}let r=t?.closest(A);if(r&&this.contains(r)){this._controlled()||this._loadMore(K(r,m,HTMLElement));return}let i=t?.closest(E);if(i&&this.contains(i)){this._controlled()||this._toggleMore(K(i,m,HTMLElement));return}let a=t?.closest(C);a&&this.contains(a)&&this._showColumn(a.getAttribute(`data-wui-switch`))}_keyDown(e){let t=this._kbd;if(t){this._liftedKey(e,t);return}let n=e.target instanceof HTMLElement?e.target:null;if(!n?.matches(g)||!this.contains(n))return;let r=this._columnOf(n);switch(e.key){case` `:case`Spacebar`:{if(e.preventDefault(),!this._canLift(n))return;if(!r)throw Error(`wui-kanban: the card is not inside a column.`);let t=L(r),a=this._columns();this._kbd={card:n,from:t,target:a.indexOf(r),verdicts:this._markTargets(n,t)},n.setAttribute(`data-wui-lifted`,``),this.setAttribute(`data-wui-dragging`,``),r.setAttribute(`data-wui-target`,``),this._announce(u.lifted(i(n),this._titleOf(r)));return}case`ArrowDown`:case`ArrowUp`:{if(!r)throw Error(`wui-kanban: the card is not inside a column.`);let t=this._visibleCardsIn(r),i=t[t.indexOf(n)+(e.key===`ArrowDown`?1:-1)];i&&(e.preventDefault(),i.focus());return}case`ArrowLeft`:case`ArrowRight`:{let t=this._columns(),n=e.key===`ArrowRight`?1:-1;for(let i=(r?t.indexOf(r):-1)+n;i>=0&&i<t.length;i+=n){let n=t[i],r=n?this._visibleCardsIn(n)[0]:void 0;if(r&&n&&!n.hasAttribute(`data-collapsed`)){e.preventDefault(),r.focus();return}}return}}}_liftedKey(e,t){let n=this._columns();switch(e.key){case`ArrowLeft`:case`ArrowRight`:{e.preventDefault();let r=t.target+(e.key===`ArrowRight`?1:-1);if(r<0||r>=n.length)return;n[t.target]?.removeAttribute(`data-wui-target`),t.target=r;let i=n[r];if(!i)return;i.setAttribute(`data-wui-target`,``),this._showColumn(L(i),!1);let a=t.verdicts.get(L(i));if(!a)throw Error(`wui-kanban: no verdict for the column.`);let o=this._titleOf(i);this._announce(a.source?u.overSource(o):a.ok?u.over(o,this._cardsIn(i).filter(e=>!z(e)).length):u.overRefused(o,a.reason??``));return}case` `:case`Spacebar`:case`Enter`:{e.preventDefault();let r=n[t.target];if(!r)throw Error(`wui-kanban: the lifted card has no target column.`);let a=L(r),o=t.verdicts.get(a);if(!o)throw Error(`wui-kanban: no verdict for the column.`);if(!o.source&&!o.ok){this._announce(o.reason);return}this._endKeyboard(),o.source?this._announce(u.cancelled(i(t.card))):this._commit(t.card,a);return}case`Escape`:case`Tab`:e.key===`Escape`&&e.preventDefault(),this._endKeyboard(),this._showColumn(t.from,!1),this._announce(u.cancelled(i(t.card)));return}}_endKeyboard(){let e=this._kbd;this._kbd=null,e&&(e.card.removeAttribute(`data-wui-lifted`),this.removeAttribute(`data-wui-dragging`),this._clearTargets())}_restoreCollapsed(){let e=d(this.getAttribute(`board-id`));for(let t of this._columns()){let n=L(t);t.hasAttribute(`data-collapsible`)&&Object.hasOwn(e,String(n))&&this._setCollapsed(t,e[String(n)],!1)}}_setCollapsed(e,t,n){let r=L(e);e.toggleAttribute(`data-collapsed`,t);let i=this._titleOf(e);for(let n of e.querySelectorAll(T))n.setAttribute(`aria-expanded`,t?`false`:`true`),n.setAttribute(`aria-label`,t?u.expand(i):u.collapse(i));n&&(s(this.getAttribute(`board-id`),r,t),this._fire(`wui:kanban:collapse`,{column:r,collapsed:t}))}_toggleMore(e){if(!e)return;let t=L(e);if(this._expanded.delete(t))for(let t of this._cardsIn(e))this._revealed.delete(R(t));else this._expanded.add(t);this.refresh()}_unloadedIn(e){return e.hasAttribute(j)?(e.hasAttribute(N)||e.setAttribute(N,String(Math.max(0,Number(e.getAttribute(M))-this._cardsIn(e).length))),Number(e.getAttribute(N))):0}async _loadMore(e){if(!e)throw Error(`wui-kanban: the load-more button is outside a column.`);let n=Number(e.getAttribute(N));if(e.hasAttribute(`data-wui-loading`)||!(n>0))return;e.setAttribute(`data-wui-loading`,``);let r=W(e,A,HTMLButtonElement);r&&(r.disabled=!0,r.textContent=u.loading);let i=new URL(String(e.getAttribute(j)),document.baseURI);i.searchParams.set(`skip`,String(this._cardsIn(e).length));let a=0,o=!1;try{let t=await f(i.toString());if(t.ok){let r=document.createElement(`template`);r.innerHTML=t.html;let i=this._bodyOf(e);for(let e of[...r.content.children])if(e.matches(g)&&!this._cardByKey(R(e))){if(!i)throw Error(`wui-kanban: the column has no body.`);i.append(e),a++}let s=t.response?.headers.get(`Wui-Kanban-Remaining`)??``;e.setAttribute(N,String(/^\d+$/.test(s)?Number(s):Math.max(0,n-a))),o=!0}}catch(e){t(`[@webority/ui-elements] A kanban column could not load its next cards.`,e)}e.removeAttribute(`data-wui-loading`),this.refresh(),o?this._fire(`wui:kanban:loaded`,{key:L(e),added:a}):J(u.loadFailed,`danger`)}_loadOnScroll(e){if(this._controlled()||!e.matches(h))return;let t=K(e,m,HTMLElement);t?.hasAttribute(j)&&e.scrollTop+e.clientHeight>=e.scrollHeight-I&&this._loadMore(t)}_isPhone(){return typeof matchMedia==`function`&&matchMedia(`(max-width: 767.98px)`).matches}_showColumn(e,t=!0){for(let t of this.querySelectorAll(C))t.getAttribute(`data-wui-switch`)===e?t.setAttribute(`aria-current`,`true`):t.removeAttribute(`aria-current`);let n=this._columnByKey(e),r=this._scroller();if(!n||!r||!t&&!this._isPhone())return;let i=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches;r.scrollTo?.({left:n.offsetLeft-r.offsetLeft,behavior:i?`auto`:`smooth`})}_syncSwitcherFromScroll(){let e=this._scroller();if(!e||!this._isPhone())return;let t=e.clientWidth||1,n=this._columns()[Math.round(e.scrollLeft/t)];if(n)for(let e of this.querySelectorAll(C))e.getAttribute(`data-wui-switch`)===L(n)?e.setAttribute(`aria-current`,`true`):e.removeAttribute(`aria-current`)}};export{Y as t};
1
+ import{n as e,t}from"./devWarn-DXdRWZs3.js";import{t as n}from"./elementBase-Cxeyx0tU.js";import{m as r}from"./formatters-ljfITOZ3.js";import{c as i,d as a,f as o,h as s,l as c,m as l,o as u,p as d}from"./kanbanModel-C2IOPJ8L.js";import{l as f}from"./wuiHttp-DGbD7Fra.js";var p=u.failed,m=`[data-wui-column]`,h=`[data-wui-body]`,g=`[data-wui-card]`,_=`[data-wui-count]`,v=`[data-wui-summary]`,y=`[data-wui-empty]`,b=`[data-wui-drop-note]`,x=`[data-wui-live]`,S=`[data-wui-help]`,C=`[data-wui-switch]`,w=`[data-wui-scroller]`,T=`[data-wui-collapse]`,E=`[data-wui-more]`,D=`data-wui-visible-limit`,O=`data-wui-overflow`,k=`input, select, textarea, [contenteditable=""], [contenteditable="true"], [data-wui-no-drag]`,A=`[data-wui-load-more]`,j=`data-wui-more-url`,M=`data-wui-total`,N=`data-wui-unloaded`,P=48,F=16,I=160,L=e=>e.getAttribute(`data-wui-column`),R=e=>e.getAttribute(`data-wui-card`),z=e=>e instanceof HTMLElement&&!!e.hidden||e.hasAttribute(`hidden`),B=e=>z(e)||e.hasAttribute(O),V=e=>e instanceof Element?e:null,H=e=>typeof e==`object`&&e&&`name`in e?e.name:void 0,U=e=>typeof e==`object`&&e&&`message`in e?e.message:void 0,W=(e,t,n)=>{let r=e.querySelector(t);return r instanceof n?r:null},G=(e,t,n)=>[...e.querySelectorAll(t)].filter(e=>e instanceof n),K=(e,t,n)=>{let r=e.closest(t);return r instanceof n?r:null},q=()=>window.WUI??null,J=(e,t)=>{e&&q()?.toast(e,{variant:t})},Y=class extends n{constructor(){super(),this._wired=!1,this._filter=null,this._expanded=/* @__PURE__ */ new Set,this._revealed=/* @__PURE__ */ new Set,this._press=null,this._drag=null,this._kbd=null,this._suppressClick=!1,this._observer=null,this._refreshQueued=!1,this._scrollTimer=0,this._onPointerMove=e=>this._pointerMove(e),this._onPointerUp=e=>this._pointerUp(e),this._onPointerCancel=()=>this._endPointer(!1),this._onDocKeyDown=e=>{e.key===`Escape`&&this._drag&&(e.preventDefault(),this._endPointer(!1))},this._onScroll=()=>{clearTimeout(this._scrollTimer),this._scrollTimer=setTimeout(()=>this._syncSwitcherFromScroll(),80)},this.addEventListener(`pointerdown`,e=>this._pointerDown(e)),this.addEventListener(`keydown`,e=>this._keyDown(e)),this.addEventListener(`click`,e=>this._click(e),!0),this.addEventListener(`scroll`,e=>{e.target instanceof Element&&this._loadOnScroll(e.target)},!0),this.addEventListener(`dragstart`,e=>{V(e.target)?.closest(g)&&e.preventDefault()}),this.addEventListener(`touchmove`,e=>{this._drag&&e.preventDefault()},{passive:!1})}_controlled(){return this.hasAttribute(`controlled`)}connectedCallback(){if(!this._wired){this._wired=!0,this._scroller()?.addEventListener(`scroll`,this._onScroll,{passive:!0}),this._restoreCollapsed();for(let e of this._allCards())this._prepareCard(e);if(typeof MutationObserver==`function`){this._observer=new MutationObserver(e=>{for(let t of e)for(let e of t.addedNodes)e instanceof HTMLElement&&e.matches(g)&&this._prepareCard(e);this._queueRefresh()});for(let e of this.querySelectorAll(h))this._observer.observe(e,{childList:!0})}this.refresh()}}disconnectedCallback(){this._endPointer(!1),this._observer?.disconnect(),this._observer=null,this._scroller()?.removeEventListener(`scroll`,this._onScroll),clearTimeout(this._scrollTimer),this._wired=!1}setFilter(e){if(e!=null&&typeof e!=`function`)throw TypeError(`wui-kanban setFilter: pass a function or null.`);if(this._filter=e,!e)for(let e of this._allCards())e.hidden=!1;this.refresh()}refresh(){if(this._controlled())return;this._refreshQueued=!1;let e=this._summaryFormat();for(let t of this._columns()){let n=L(t),i=o(t.getAttribute(D)),a=[],s=[];for(let e of this._cardsIn(t))this._filter&&(e.hidden=this._filter(e)===!1),z(e)?e.removeAttribute(O):(a.push(e),s.push(e.getAttribute(`data-wui-value`)));let d=this._expanded.has(n),f=c(a.map(R),i,d,this._revealed);for(let e of a)e.toggleAttribute(O,f.has(R(e)));let p=this._unloadedIn(t),m=String(a.length+p);for(let e of this._countsOf(t))e.textContent!==m&&(e.textContent=m);let h=W(t,y,HTMLElement);if(h&&(h.hidden=a.length>0),e){let n=t.querySelector(v);n&&(n.textContent=r(l(s),e))}let g=W(t,E,HTMLElement);if(g){g.hidden=i==null||(d?a.length<=i:f.size===0),g.setAttribute(`aria-expanded`,d?`true`:`false`);let e=d?u.fewer:u.more(f.size);g.textContent!==e&&(g.textContent=e)}let _=W(t,A,HTMLButtonElement);if(_&&(_.hidden=p<=0,!t.hasAttribute(`data-wui-loading`))){_.disabled=!1;let e=u.loadMore(p);_.textContent!==e&&(_.textContent=e)}}}moveCard(e,t,n){let r=this._cardByKey(e);if(!r)throw Error(`wui-kanban moveCard: no card "${String(e)}" on this board.`);if(!this._columnByKey(t))throw Error(`wui-kanban moveCard: no column "${String(t)}" on this board.`);return this._commit(r,t,n)}_columns(){return G(this,m,HTMLElement)}_columnByKey(e){return this._columns().find(t=>L(t)===e)||null}_columnOf(e){return K(e,m,HTMLElement)}_titleOf(e){return(e.querySelector(`.wui-kanban-title`)?.textContent||L(e)||``).replace(/\s+/g,` `).trim()}_bodyOf(e){return W(e,h,HTMLElement)}_cardsIn(e){let t=this._bodyOf(e);return t?[...t.children].filter(e=>e instanceof HTMLElement&&e.matches(g)):[]}_visibleCardsIn(e){return this._cardsIn(e).filter(e=>!B(e))}_allCards(){return G(this,`${h} > ${g}`,HTMLElement)}_cardByKey(e){return this._allCards().find(t=>R(t)===e)||null}_countsOf(e){let t=L(e),n=[...this.querySelectorAll(C)].filter(e=>e.getAttribute(`data-wui-switch`)===t);return[...e.querySelectorAll(_),...n.flatMap(e=>[...e.querySelectorAll(_)])]}_scroller(){return W(this,w,HTMLElement)}_summaryFormat(){let e=this.getAttribute(`summary-format`);return e?a(e,this.getAttribute(`summary-unit`)):null}_queueRefresh(){this._refreshQueued||(this._refreshQueued=!0,queueMicrotask(()=>{this._refreshQueued&&this.refresh()}))}_prepareCard(e){let t=this.querySelector(S);t?.id&&!e.hasAttribute(`aria-describedby`)&&e.setAttribute(`aria-describedby`,t.id),e.hasAttribute(`tabindex`)||(e.tabIndex=0)}_announce(e){let t=W(this,x,HTMLElement);t&&e&&(t.textContent=``,t.textContent=e)}_fire(e,t,n=!1){return this.dispatchEvent(new CustomEvent(e,{bubbles:!0,cancelable:n,detail:t}))}_canLift(e){let t=i(e),n=this.hasAttribute(`readonly`);return n||e.hasAttribute(`data-wui-locked`)?(this._announce(u.locked(t)),this._fire(`wui:kanban:locked`,{key:R(e),card:e,reason:n?`readonly`:`locked`},!0),!1):e.getAttribute(`aria-busy`)!==`true`||(this._announce(u.busy),J(u.busy,`info`),!1)}_check(e,t,n){if(t===n)return{ok:!1,source:!0,reason:null};let r=this._columnByKey(t),i=this._columnByKey(n),a=u.refused(r?this._titleOf(r):String(t),i?this._titleOf(i):String(n)),o=i?.getAttribute(`data-accept-from`),s=o?.split(/\s+/).filter(Boolean)??[];if(o!=null&&!s.includes(t))return{ok:!1,reason:a};if(typeof this.accept==`function`){let r=this.accept(e,t,n);if(r===!1)return{ok:!1,reason:a};if(typeof r==`string`&&r)return{ok:!1,reason:r}}return{ok:!0,reason:null}}_markTargets(e,t){let n=i(e),r=/* @__PURE__ */ new Map;for(let i of this._columns()){let a=L(i),o=this._check(e,t,a);r.set(a,o),i.setAttribute(`data-wui-drop`,o.source?`source`:o.ok?`ok`:`refused`);let s=W(i,b,HTMLElement);s&&!o.source&&(s.textContent=o.ok?u.dropHere(n,this._titleOf(i)):o.reason,s.hidden=!1)}return r}_clearTargets(){for(let e of this._columns()){e.removeAttribute(`data-wui-drop`),e.removeAttribute(`data-wui-over`),e.removeAttribute(`data-wui-target`);let t=W(e,b,HTMLElement);t&&(t.hidden=!0,t.textContent=``)}}async _commit(e,t,n){let r=this._columnOf(e);if(!r)throw Error(`wui-kanban: the card is not inside a column.`);let a=L(r),o=this._columnByKey(t),s=i(e);if(a===t||!this._canLift(e))return!1;let c=this._check(e,a,t);if(!c.ok)return this._announce(c.reason),J(c.reason,`info`),!1;if(!o)throw Error(`wui-kanban: no column "${String(t)}" on this board.`);let l=this._cardsIn(o),d=Number.isInteger(n)?Math.max(0,Math.min(n??0,l.length)):l.length,m={key:R(e),card:e,from:a,to:t,index:d},h=e.contains(document.activeElement);if(this._controlled())return this._fire(`wui:kanban:move`,m),this._announce(u.moved(s,this._titleOf(o))),h&&this._refocusSoon(m.key),!0;if(!this._fire(`wui:kanban:move`,m,!0))return!1;let g=o.hasAttribute(D)&&!this._revealed.has(m.key);g&&this._revealed.add(m.key);let _={parent:e.parentNode,next:e.nextSibling,column:r,revealed:g},v=this._bodyOf(o);if(!v)throw Error(`wui-kanban: the target column has no body.`);v.insertBefore(e,l[d]||null),h&&this._focusMoved(e),this.refresh();let y=o.getAttribute(`data-wui-step`);if(y)return this._runStep(e,m,_,y,o.getAttribute(`data-wui-step-size`));let b=this.getAttribute(`move-url`);if(!b)return this._announce(u.moved(s,this._titleOf(o))),this._fire(`wui:kanban:moved`,{...m,result:null}),!0;this._lock(e,!0),this._announce(u.saving(s,this._titleOf(o)));let x=new URLSearchParams({card:String(m.key),from:String(a),to:String(t),index:String(d)}),S=await f(b,{method:`POST`,body:x});if(this._lock(e,!1),S.kind===`session`)return!1;if(S.ok){let t=this._applyFragment(S.html)||e;return J(S.message,`success`),this._announce(u.moved(i(t),this._titleOf(o))),this._fire(`wui:kanban:moved`,{...m,card:t,result:S}),!0}return this._rollback(e,_),S.kind!==`aborted`&&J(S.message||p[S.kind]||u.failed.server,`danger`),this._fire(`wui:kanban:failed`,{...m,kind:S.kind,status:S.status,message:S.message}),!1}async _runStep(e,t,n,r,a){let o=i(e),s=this._columnByKey(t.to),c=new URLSearchParams({card:String(t.key),from:String(t.from),to:String(t.to)}).toString(),l=r+(r.includes(`?`)?`&`:`?`)+c;this._lock(e,!0);let d;try{let t=window.WUI?.modal?.load;if(typeof t!=`function`)throw Error(`<wui-kanban> data-wui-step needs the Razor script webority-ui.js (WUI.modal.load).`);d=await(await t(l,{trigger:e,size:a||void 0})).closed}catch(r){return this._lock(e,!1),this._rollback(e,n),H(r)!==`AbortError`&&J(u.failed.server,`danger`),this._fire(`wui:kanban:failed`,{...t,kind:`step`,status:0,message:U(r)??null}),!1}if(d?.status!==`success`)return this._lock(e,!1),this._rollback(e,n),this._announce(u.cancelled(o)),this._fire(`wui:kanban:failed`,{...t,kind:`dismissed`,status:0,message:null}),!1;let p=e,m=this.getAttribute(`card-url`);if(m){let n=await f(`${m}${m.includes(`?`)?`&`:`?`}${new URLSearchParams({card:String(t.key)})}`);n.ok&&(p=this._applyFragment(n.html)||e)}if(this._lock(p,!1),!s)throw Error(`wui-kanban: no column "${String(t.to)}" on this board.`);return this._announce(u.moved(i(p),this._titleOf(s))),this._fire(`wui:kanban:moved`,{...t,card:p,result:d}),!0}_lock(e,t){t?(e.setAttribute(`aria-busy`,`true`),e.setAttribute(`data-wui-saving`,``)):(e.removeAttribute(`aria-busy`),e.removeAttribute(`data-wui-saving`))}_rollback(e,t){let n=e.contains(document.activeElement),r=t.next&&t.next.parentNode===t.parent?t.next:null;if(t.revealed&&this._revealed.delete(R(e)),!t.parent)throw Error(`wui-kanban: the card had no parent to go back to.`);t.parent.insertBefore(e,r),n&&e.focus(),this.refresh(),this._announce(u.rolledBack(i(e),this._titleOf(t.column)))}_applyFragment(t){if(!t)return null;let n=document.createElement(`template`);n.innerHTML=t;for(let t of n.content.querySelectorAll(`script`))e(`[@webority/ui-elements] A kanban fragment carried a script tag; it was removed, not run.`),t.remove();let r=null;for(let e of G(n.content,g,HTMLElement)){if(e.closest(`template`))continue;let t=this._cardByKey(R(e));if(!t)continue;let n=t.contains(document.activeElement);t.dispatchEvent(new CustomEvent(`wui:teardown`,{bubbles:!0})),t.hidden&&(e.hidden=!0),t.replaceWith(e),this._prepareCard(e),n&&e.focus(),r??=e}for(let e of G(n.content,`template[data-wui-kanban-summary]`,HTMLTemplateElement))this._columnByKey(e.getAttribute(`data-wui-kanban-summary`))?.querySelector(v)?.replaceChildren(e.content.cloneNode(!0));return this.refresh(),q()?.refresh(),r}_refocusSoon(e){let t=()=>{let t=this._cardByKey(e);t&&this._focusMoved(t)};typeof requestAnimationFrame==`function`?requestAnimationFrame(t):setTimeout(t,0)}_focusMoved(e){e.focus({preventScroll:!0}),e.scrollIntoView?.({block:`nearest`})}_pointerDown(e){if(e.button!==0||e.isPrimary===!1||this._drag||this._kbd)return;let t=V(e.target),n=t?K(t,g,HTMLElement):null;if(!n||!this.contains(n)||t?.closest(k))return;let r={card:n,id:e.pointerId,x:e.clientX,y:e.clientY,type:e.pointerType,timer:0};this._press=r,e.pointerType===`touch`&&(r.timer=setTimeout(()=>{this._press===r&&this._startDrag(r,r.x,r.y)},400)),window.addEventListener(`pointermove`,this._onPointerMove),window.addEventListener(`pointerup`,this._onPointerUp),window.addEventListener(`pointercancel`,this._onPointerCancel)}_pointerMove(e){let t=this._press;if(t&&e.pointerId===t.id){if(!this._drag){if(!(Math.hypot(e.clientX-t.x,e.clientY-t.y)>6))return;if(t.type===`touch`){this._endPointer(!1);return}if(this._startDrag(t,e.clientX,e.clientY),!this._drag)return}this._dragTo(e.clientX,e.clientY)}}_pointerUp(e){this._press&&e.pointerId===this._press.id&&this._endPointer(!!this._drag)}_startDrag(e,t,n){let r=e.card;if(!this._canLift(r)){this._endPointer(!1);return}let a=this._columnOf(r);if(!a)throw Error(`wui-kanban: the card is not inside a column.`);let o=L(a),s=r.getBoundingClientRect(),c=r.cloneNode(!0);if(!(c instanceof HTMLElement))return;let l=c;for(let e of[l,...l.querySelectorAll(`[id]`)])e.removeAttribute(`id`);l.removeAttribute(`data-wui-card`),l.removeAttribute(`tabindex`),l.setAttribute(`aria-hidden`,`true`),l.classList.add(`wui-kanban-ghost`),l.style.width=`${s.width}px`,this.appendChild(l),r.setAttribute(`data-wui-dragging`,``),this.setAttribute(`data-wui-dragging`,``),this._drag={card:r,from:o,ghost:l,dx:t-s.left,dy:n-s.top,x:t,y:n,over:null,verdicts:this._markTargets(r,o)},this._announce(u.lifted(i(r),this._titleOf(a))),document.addEventListener(`keydown`,this._onDocKeyDown),this._dragTo(t,n)}_dragTo(e,t){let n=this._drag;if(!n)throw Error(`wui-kanban: no drag in progress.`);n.x=e,n.y=t,n.ghost.style.transform=`translate(${e-n.dx}px, ${t-n.dy}px)`;let r=this._columnAt(e,t);r!==n.over&&(n.over?.removeAttribute(`data-wui-over`),r?.setAttribute(`data-wui-over`,``),n.over=r),this._autoScroll(e,t,r)}_columnAt(e,t){for(let n of this._columns()){let r=n.getBoundingClientRect();if(e>=r.left&&e<=r.right&&t>=r.top&&t<=r.bottom)return n}return null}_indexAt(e,t){let n=this._visibleCardsIn(e).filter(e=>e!==this._drag?.card).find(e=>{let n=e.getBoundingClientRect();return t<n.top+n.height/2}),r=this._cardsIn(e).filter(e=>e!==this._drag?.card);return n?r.indexOf(n):r.length}_autoScroll(e,t,n){let r=this._scroller();if(r){let t=r.getBoundingClientRect();t.width>0&&(e<t.left+P?r.scrollBy?.({left:-16}):e>t.right-P&&r.scrollBy?.({left:F}))}if(n&&this._scrollColumn(n,t))return;let i=window.innerHeight||0;i>0&&(t<P?window.scrollBy?.({top:-16}):t>i-P&&window.scrollBy?.({top:F}))}_scrollColumn(e,t){let n=this._bodyOf(e);if(!n||e.hasAttribute(`data-collapsed`)||n.scrollHeight<=n.clientHeight)return!1;let r=n.getBoundingClientRect();return t<r.top+P&&n.scrollTop>0?(n.scrollBy?.({top:-16}),!0):t>r.bottom-P&&n.scrollTop+n.clientHeight<n.scrollHeight-1&&(n.scrollBy?.({top:F}),!0)}_endPointer(e){let t=this._press,n=this._drag;if(t&&clearTimeout(t.timer||void 0),this._press=null,this._drag=null,window.removeEventListener(`pointermove`,this._onPointerMove),window.removeEventListener(`pointerup`,this._onPointerUp),window.removeEventListener(`pointercancel`,this._onPointerCancel),document.removeEventListener(`keydown`,this._onDocKeyDown),!n)return;n.ghost.remove(),n.card.removeAttribute(`data-wui-dragging`),this.removeAttribute(`data-wui-dragging`),this._suppressClick=!0,setTimeout(()=>{this._suppressClick=!1},0);let r=n.over;if(this._clearTargets(),!e||!r){this._announce(u.cancelled(i(n.card)));return}let a=L(r),o=n.verdicts.get(a);o?.source?this._announce(u.cancelled(i(n.card))):o?.ok?this._commit(n.card,a,this._indexAt(r,n.y)):(this._announce(o?.reason),J(o?.reason,`info`))}_click(e){let t=V(e.target);if(this._suppressClick&&t?.closest(g)){e.preventDefault(),e.stopPropagation(),this._suppressClick=!1;return}let n=t?.closest(T);if(n&&this.contains(n)){let e=K(n,m,HTMLElement);e&&this._setCollapsed(e,!e.hasAttribute(`data-collapsed`),!0);return}let r=t?.closest(A);if(r&&this.contains(r)){this._controlled()||this._loadMore(K(r,m,HTMLElement));return}let i=t?.closest(E);if(i&&this.contains(i)){this._controlled()||this._toggleMore(K(i,m,HTMLElement));return}let a=t?.closest(C);a&&this.contains(a)&&this._showColumn(a.getAttribute(`data-wui-switch`))}_keyDown(e){let t=this._kbd;if(t){this._liftedKey(e,t);return}let n=e.target instanceof HTMLElement?e.target:null;if(!n?.matches(g)||!this.contains(n))return;let r=this._columnOf(n);switch(e.key){case` `:case`Spacebar`:{if(e.preventDefault(),!this._canLift(n))return;if(!r)throw Error(`wui-kanban: the card is not inside a column.`);let t=L(r),a=this._columns();this._kbd={card:n,from:t,target:a.indexOf(r),verdicts:this._markTargets(n,t)},n.setAttribute(`data-wui-lifted`,``),this.setAttribute(`data-wui-dragging`,``),r.setAttribute(`data-wui-target`,``),this._announce(u.lifted(i(n),this._titleOf(r)));return}case`ArrowDown`:case`ArrowUp`:{if(!r)throw Error(`wui-kanban: the card is not inside a column.`);let t=this._visibleCardsIn(r),i=t[t.indexOf(n)+(e.key===`ArrowDown`?1:-1)];i&&(e.preventDefault(),i.focus());return}case`ArrowLeft`:case`ArrowRight`:{let t=this._columns(),n=e.key===`ArrowRight`?1:-1;for(let i=(r?t.indexOf(r):-1)+n;i>=0&&i<t.length;i+=n){let n=t[i],r=n?this._visibleCardsIn(n)[0]:void 0;if(r&&n&&!n.hasAttribute(`data-collapsed`)){e.preventDefault(),r.focus();return}}return}}}_liftedKey(e,t){let n=this._columns();switch(e.key){case`ArrowLeft`:case`ArrowRight`:{e.preventDefault();let r=t.target+(e.key===`ArrowRight`?1:-1);if(r<0||r>=n.length)return;n[t.target]?.removeAttribute(`data-wui-target`),t.target=r;let i=n[r];if(!i)return;i.setAttribute(`data-wui-target`,``),this._showColumn(L(i),!1);let a=t.verdicts.get(L(i));if(!a)throw Error(`wui-kanban: no verdict for the column.`);let o=this._titleOf(i);this._announce(a.source?u.overSource(o):a.ok?u.over(o,this._cardsIn(i).filter(e=>!z(e)).length):u.overRefused(o,a.reason??``));return}case` `:case`Spacebar`:case`Enter`:{e.preventDefault();let r=n[t.target];if(!r)throw Error(`wui-kanban: the lifted card has no target column.`);let a=L(r),o=t.verdicts.get(a);if(!o)throw Error(`wui-kanban: no verdict for the column.`);if(!o.source&&!o.ok){this._announce(o.reason);return}this._endKeyboard(),o.source?this._announce(u.cancelled(i(t.card))):this._commit(t.card,a);return}case`Escape`:case`Tab`:e.key===`Escape`&&e.preventDefault(),this._endKeyboard(),this._showColumn(t.from,!1),this._announce(u.cancelled(i(t.card)));return}}_endKeyboard(){let e=this._kbd;this._kbd=null,e&&(e.card.removeAttribute(`data-wui-lifted`),this.removeAttribute(`data-wui-dragging`),this._clearTargets())}_restoreCollapsed(){let e=d(this.getAttribute(`board-id`));for(let t of this._columns()){let n=L(t);t.hasAttribute(`data-collapsible`)&&Object.hasOwn(e,String(n))&&this._setCollapsed(t,e[String(n)],!1)}}_setCollapsed(e,t,n){let r=L(e);e.toggleAttribute(`data-collapsed`,t);let i=this._titleOf(e);for(let n of e.querySelectorAll(T))n.setAttribute(`aria-expanded`,t?`false`:`true`),n.setAttribute(`aria-label`,t?u.expand(i):u.collapse(i));n&&(s(this.getAttribute(`board-id`),r,t),this._fire(`wui:kanban:collapse`,{column:r,collapsed:t}))}_toggleMore(e){if(!e)return;let t=L(e);if(this._expanded.delete(t))for(let t of this._cardsIn(e))this._revealed.delete(R(t));else this._expanded.add(t);this.refresh()}_unloadedIn(e){return e.hasAttribute(j)?(e.hasAttribute(N)||e.setAttribute(N,String(Math.max(0,Number(e.getAttribute(M))-this._cardsIn(e).length))),Number(e.getAttribute(N))):0}async _loadMore(e){if(!e)throw Error(`wui-kanban: the load-more button is outside a column.`);let n=Number(e.getAttribute(N));if(e.hasAttribute(`data-wui-loading`)||!(n>0))return;e.setAttribute(`data-wui-loading`,``);let r=W(e,A,HTMLButtonElement);r&&(r.disabled=!0,r.textContent=u.loading);let i=new URL(String(e.getAttribute(j)),document.baseURI);i.searchParams.set(`skip`,String(this._cardsIn(e).length));let a=0,o=!1;try{let t=await f(i.toString());if(t.ok){let r=document.createElement(`template`);r.innerHTML=t.html;let i=this._bodyOf(e);for(let e of[...r.content.children])if(e.matches(g)&&!this._cardByKey(R(e))){if(!i)throw Error(`wui-kanban: the column has no body.`);i.append(e),a++}let s=t.response?.headers.get(`Wui-Kanban-Remaining`)??``;e.setAttribute(N,String(/^\d+$/.test(s)?Number(s):Math.max(0,n-a))),o=!0}}catch(e){t(`[@webority/ui-elements] A kanban column could not load its next cards.`,e)}e.removeAttribute(`data-wui-loading`),this.refresh(),o?this._fire(`wui:kanban:loaded`,{key:L(e),added:a}):J(u.loadFailed,`danger`)}_loadOnScroll(e){if(this._controlled()||!e.matches(h))return;let t=K(e,m,HTMLElement);t?.hasAttribute(j)&&e.scrollTop+e.clientHeight>=e.scrollHeight-I&&this._loadMore(t)}_isPhone(){return typeof matchMedia==`function`&&matchMedia(`(max-width: 767.98px)`).matches}_showColumn(e,t=!0){for(let t of this.querySelectorAll(C))t.getAttribute(`data-wui-switch`)===e?t.setAttribute(`aria-current`,`true`):t.removeAttribute(`aria-current`);let n=this._columnByKey(e),r=this._scroller();if(!n||!r||!t&&!this._isPhone())return;let i=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches;r.scrollTo?.({left:n.offsetLeft-r.offsetLeft,behavior:i?`auto`:`smooth`})}_syncSwitcherFromScroll(){let e=this._scroller();if(!e||!this._isPhone())return;let t=e.clientWidth||1,n=this._columns()[Math.round(e.scrollLeft/t)];if(n)for(let e of this.querySelectorAll(C))e.getAttribute(`data-wui-switch`)===L(n)?e.setAttribute(`aria-current`,`true`):e.removeAttribute(`aria-current`)}};export{Y as t};
@@ -1 +1 @@
1
- import{h as e,o as t}from"./formatters-C3V6M5zV.js";var n=Object.freeze([`neutral`,`primary`,`info`,`success`,`warning`,`danger`]),r=Object.freeze([`number`,`currency`,`compact`]),i=`wui-kanban:`,a=`(max-width: 767.98px)`,o=400,s=6,c=Object.freeze({help:`Press Space to pick up the card. Use the Left and Right arrow keys to choose a column, then Space to drop it, or Escape to cancel.`,empty:`Nothing here`,collapse:e=>`Collapse ${e}`,expand:e=>`Expand ${e}`,lifted:(e,t)=>`Picked up ${e} in ${t}. Use the Left and Right arrow keys to choose a column.`,over:(e,t)=>`${e}, ${t===1?`1 card`:`${t} cards`}. Drop allowed.`,overSource:e=>`${e}, where the card started.`,overRefused:(e,t)=>`${e}. ${t}`,dropHere:(e,t)=>`Drop here to move ${e} to ${t}.`,refused:(e,t)=>`Cards in ${e} cannot move to ${t}.`,moved:(e,t)=>`Moved ${e} to ${t}.`,saving:(e,t)=>`Moving ${e} to ${t}.`,cancelled:e=>`${e} was not moved.`,rolledBack:(e,t)=>`${e} went back to ${t}.`,locked:e=>`${e} cannot be moved.`,more:e=>`Show ${e} more`,fewer:`Show fewer`,loadMore:e=>`Show more (${e})`,loading:`Loading…`,loadFailed:`More cards could not be loaded. Try again.`,swipeHint:`Swipe sideways or tap a column`,busy:`This card is still saving. Try again in a moment.`,failed:Object.freeze({forbidden:`You do not have permission to move this card.`,client:`This card could not be moved. Refresh the board and try again.`,validation:`This card could not be moved. Refresh the board and try again.`,server:`Something went wrong on our side, so the card went back. Try again in a moment.`,network:`Could not reach the server, so the card went back. Check your connection and try again.`})}),l=e=>typeof e==`object`&&!!e,u=e=>{let t=l(e)?e.collapsed:void 0;return l(t)?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,!!t])):{}};function d(e){if(e==null||e===``)return null;let t=typeof e==`number`?e:Number(e);if(!Number.isInteger(t)||t<1)throw TypeError(`Unsupported kanban visible limit "${String(e)}". Use a whole number of 1 or more.`);return t}function f(e,t,n,r){let i=/* @__PURE__ */ new Set;if(t==null||n)return i;let a=0;for(let n of e)r.has(n)||(a<t?a++:i.add(n));return i}function p(e){let t=(e.getAttribute(`aria-label`)||e.textContent||``).replace(/\s+/g,` `).trim();return t.length>80?`${t.slice(0,79)}…`:t||e.getAttribute(`data-wui-card`)||`Card`}function m(e){return e?`${i}${e}`:null}function h(e,t=globalThis.localStorage){let n=m(e);if(!n||!t)return{};try{return u(JSON.parse(t.getItem(n)||`null`))}catch{return{}}}function g(e,t,n,r=globalThis.localStorage){let i=m(e);if(!i||!r)return;let a={...h(e,r),[String(t)]:!!n};try{r.setItem(i,JSON.stringify({collapsed:a}))}catch{}}function _(n,i){if(!r.includes(n))throw TypeError(`Unsupported kanban summary format "${String(n)}". Use ${r.join(`, `)}.`);if(i!=null&&i!==``&&!e(i))throw TypeError(`Unsupported kanban summary unit "${String(i)}". Use ${t.join(`, `)}.`);return n===`currency`?{style:`currency`,unit:i||`rupees`}:n===`compact`?{style:`compact`,currency:`INR`,unit:i||`rupees`}:{style:`number`,decimals:0}}function v(e){let t=0;for(let n of e){if(n==null||n===``)continue;let e=typeof n==`number`?n:Number(n);Number.isFinite(e)&&(t+=e)}return t}export{r as a,p as c,_ as d,d as f,g as h,i,f as l,v as m,o as n,c as o,h as p,a as r,n as s,s as t,m as u};
1
+ import{h as e,o as t}from"./formatters-ljfITOZ3.js";var n=Object.freeze([`neutral`,`primary`,`info`,`success`,`warning`,`danger`]),r=Object.freeze([`number`,`currency`,`compact`]),i=`wui-kanban:`,a=`(max-width: 767.98px)`,o=400,s=6,c=Object.freeze({help:`Press Space to pick up the card. Use the Left and Right arrow keys to choose a column, then Space to drop it, or Escape to cancel.`,empty:`Nothing here`,collapse:e=>`Collapse ${e}`,expand:e=>`Expand ${e}`,lifted:(e,t)=>`Picked up ${e} in ${t}. Use the Left and Right arrow keys to choose a column.`,over:(e,t)=>`${e}, ${t===1?`1 card`:`${t} cards`}. Drop allowed.`,overSource:e=>`${e}, where the card started.`,overRefused:(e,t)=>`${e}. ${t}`,dropHere:(e,t)=>`Drop here to move ${e} to ${t}.`,refused:(e,t)=>`Cards in ${e} cannot move to ${t}.`,moved:(e,t)=>`Moved ${e} to ${t}.`,saving:(e,t)=>`Moving ${e} to ${t}.`,cancelled:e=>`${e} was not moved.`,rolledBack:(e,t)=>`${e} went back to ${t}.`,locked:e=>`${e} cannot be moved.`,more:e=>`Show ${e} more`,fewer:`Show fewer`,loadMore:e=>`Show more (${e})`,loading:`Loading…`,loadFailed:`More cards could not be loaded. Try again.`,swipeHint:`Swipe sideways or tap a column`,busy:`This card is still saving. Try again in a moment.`,failed:Object.freeze({forbidden:`You do not have permission to move this card.`,client:`This card could not be moved. Refresh the board and try again.`,validation:`This card could not be moved. Refresh the board and try again.`,server:`Something went wrong on our side, so the card went back. Try again in a moment.`,network:`Could not reach the server, so the card went back. Check your connection and try again.`})}),l=e=>typeof e==`object`&&!!e,u=e=>{let t=l(e)?e.collapsed:void 0;return l(t)?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,!!t])):{}};function d(e){if(e==null||e===``)return null;let t=typeof e==`number`?e:Number(e);if(!Number.isInteger(t)||t<1)throw TypeError(`Unsupported kanban visible limit "${String(e)}". Use a whole number of 1 or more.`);return t}function f(e,t,n,r){let i=/* @__PURE__ */ new Set;if(t==null||n)return i;let a=0;for(let n of e)r.has(n)||(a<t?a++:i.add(n));return i}function p(e){let t=(e.getAttribute(`aria-label`)||e.textContent||``).replace(/\s+/g,` `).trim();return t.length>80?`${t.slice(0,79)}…`:t||e.getAttribute(`data-wui-card`)||`Card`}function m(e){return e?`${i}${e}`:null}function h(e,t=globalThis.localStorage){let n=m(e);if(!n||!t)return{};try{return u(JSON.parse(t.getItem(n)||`null`))}catch{return{}}}function g(e,t,n,r=globalThis.localStorage){let i=m(e);if(!i||!r)return;let a={...h(e,r),[String(t)]:!!n};try{r.setItem(i,JSON.stringify({collapsed:a}))}catch{}}function _(n,i){if(!r.includes(n))throw TypeError(`Unsupported kanban summary format "${String(n)}". Use ${r.join(`, `)}.`);if(i!=null&&i!==``&&!e(i))throw TypeError(`Unsupported kanban summary unit "${String(i)}". Use ${t.join(`, `)}.`);return n===`currency`?{style:`currency`,unit:i||`rupees`}:n===`compact`?{style:`compact`,currency:`INR`,unit:i||`rupees`}:{style:`number`,decimals:0}}function v(e){let t=0;for(let n of e){if(n==null||n===``)continue;let e=typeof n==`number`?n:Number(n);Number.isFinite(e)&&(t+=e)}return t}export{r as a,p as c,_ as d,d as f,g as h,i,f as l,v as m,o as n,c as o,h as p,a as r,n as s,s as t,m as u};
@@ -1 +1 @@
1
- import{_ as e,l as t}from"./formatters-C3V6M5zV.js";var n=99,r=864e5,i=Object.freeze({label:`Notifications`,empty:`You are all caught up.`,markAll:`Mark all read`,viewAll:`View all`,unreadPrefix:`Unread: `,today:`Today`,yesterday:`Yesterday`,allRead:`All notifications marked as read.`,noneUnread:`No unread notifications`,failed:Object.freeze({forbidden:`You do not have permission to mark these as read.`,client:`These could not be marked as read. Refresh the page and try again.`,validation:`These could not be marked as read. Refresh the page and try again.`,server:`Something went wrong on our side, so these were not marked as read. Try again in a moment.`,network:`Could not reach the server, so these were not marked as read. Check your connection and try again.`})});function a(e){return e>99?`99+`:String(e)}function o(e,t){return t===0?e:`${e}, ${a(t)} unread`}function s(e){return e===0?i.noneUnread:`${a(e)} unread notifications`}function c(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)?``:t(e,{pattern:`time`})}function l(n,a=Date.now()){let o=t(n);return o===t(a)?i.today:o===t(e(a)-r)?i.yesterday:o}function u(n,r=Date.now()){let i=/* @__PURE__ */ new Map;for(let a of n){if(!Number.isFinite(e(a.at)))throw Error(`<AppNotificationCenter> item "${a.id}": at must be an ISO date-time with its zone (or a YYYY-MM-DD day), got ${String(a.at)}.`);let n=t(a.at),o=i.get(n);o||(o={key:n,heading:l(a.at,r),items:[]},i.set(n,o)),o.items.push(a)}return[...i.values()]}export{l as a,s as c,a as i,i as n,c as o,u as r,o as s,n as t};
1
+ import{_ as e,l as t}from"./formatters-ljfITOZ3.js";var n=99,r=864e5,i=Object.freeze({label:`Notifications`,empty:`You are all caught up.`,markAll:`Mark all read`,viewAll:`View all`,unreadPrefix:`Unread: `,today:`Today`,yesterday:`Yesterday`,allRead:`All notifications marked as read.`,noneUnread:`No unread notifications`,failed:Object.freeze({forbidden:`You do not have permission to mark these as read.`,client:`These could not be marked as read. Refresh the page and try again.`,validation:`These could not be marked as read. Refresh the page and try again.`,server:`Something went wrong on our side, so these were not marked as read. Try again in a moment.`,network:`Could not reach the server, so these were not marked as read. Check your connection and try again.`})});function a(e){return e>99?`99+`:String(e)}function o(e,t){return t===0?e:`${e}, ${a(t)} unread`}function s(e){return e===0?i.noneUnread:`${a(e)} unread notifications`}function c(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)?``:t(e,{pattern:`time`})}function l(n,a=Date.now()){let o=t(n);return o===t(a)?i.today:o===t(e(a)-r)?i.yesterday:o}function u(n,r=Date.now()){let i=/* @__PURE__ */ new Map;for(let a of n){if(!Number.isFinite(e(a.at)))throw Error(`<AppNotificationCenter> item "${a.id}": at must be an ISO date-time with its zone (or a YYYY-MM-DD day), got ${String(a.at)}.`);let n=t(a.at),o=i.get(n);o||(o={key:n,heading:l(a.at,r),items:[]},i.set(n,o)),o.items.push(a)}return[...i.values()]}export{l as a,s as c,a as i,i as n,c as o,u as r,o as s,n as t};
@@ -1 +1 @@
1
- import{_ as e,l as t}from"./formatters-C3V6M5zV.js";var n=6e4,r=60*n,i=24*r,a=7,o=(e,t)=>`${e} ${t}${e===1?``:`s`}`;function s(a,s=Date.now()){let c=e(a);if(!Number.isFinite(c))return`-`;let l=s-c,u=Math.abs(l);if(u>=7*i)return t(c);if(u<n)return`just now`;let[d,f]=u<r?[Math.floor(u/n),`minute`]:u<i?[Math.floor(u/r),`hour`]:[Math.floor(u/i),`day`];return l>0?`${o(d,f)} ago`:`in ${o(d,f)}`}function c(n){let r=e(n);return Number.isFinite(r)?`${t(r,{pattern:`datetime`})} IST`:`-`}export{s as n,c as r,a as t};
1
+ import{_ as e,l as t}from"./formatters-ljfITOZ3.js";var n=6e4,r=60*n,i=24*r,a=7,o=(e,t)=>`${e} ${t}${e===1?``:`s`}`;function s(a,s=Date.now()){let c=e(a);if(!Number.isFinite(c))return`-`;let l=s-c,u=Math.abs(l);if(u>=7*i)return t(c);if(u<n)return`just now`;let[d,f]=u<r?[Math.floor(u/n),`minute`]:u<i?[Math.floor(u/r),`hour`]:[Math.floor(u/i),`day`];return l>0?`${o(d,f)} ago`:`in ${o(d,f)}`}function c(n){let r=e(n);return Number.isFinite(r)?`${t(r,{pattern:`datetime`})} IST`:`-`}export{s as n,c as r,a as t};
@@ -1 +1 @@
1
- import{n as e}from"./devWarn-DXdRWZs3.js";import{i as t}from"./optionLabel-4xjXWy74.js";import{t as n}from"./customRule-Chp7YwFb.js";import{n as r}from"./WuiSelect-D9ABfsdZ.js";var i=(e,n)=>{let r=n.toLowerCase(),i=e.getAttribute(`value-label`);return i&&String(e.value??``)!==``&&i.toLowerCase()===r?!0:e.options.some(e=>t(e).toLowerCase()===r||String(e.value??``).toLowerCase()===r)};function a(){let t,a,o=0,s,c=null,l=null,u=``,d=null,f=!1,p=()=>r(t),m=()=>typeof t.loadOptions!=`function`&&!t.getAttribute(`source`),h=(e,n,r)=>{let i=t.getAttribute(e);if(i==null||i.trim()===``)return n;let a=Number(i);return r(a)?a:n},g=()=>h(`min-chars`,1,e=>Number.isInteger(e)&&e>=0),_=()=>h(`debounce`,250,e=>Number.isFinite(e)&&e>=0),v=()=>{c?.abort(),c=null};function y(e,n){if(typeof t.loadOptions==`function`)return t.loadOptions(e,{signal:n});let r=t.getAttribute(`source`);if(r===null)throw Error(`search source attribute missing`);let i=`${r}${r.includes(`?`)?`&`:`?`}q=${encodeURIComponent(e)}`;return fetch(i,{signal:n,credentials:`same-origin`,headers:{Accept:`application/json`}}).then(e=>{if(!e.ok)throw Error(`search request failed with status ${e.status}`);return e.json()})}function b(n,r,i){r?(e(`wui-select: search failed`,i),t.setPartOptions([]),t.setStatus(`empty`)):(t.setPartOptions(n),t.setStatus(n.length?`idle`:`empty`))}async function x(e,t,n){let r=[],i=!1,a=null;try{if(r=await y(e,n),!Array.isArray(r))throw TypeError(`search results must be an array`)}catch(e){i=!0,a=e??/* @__PURE__ */ Error(`search failed`)}finally{t===o&&(c=null,b(r,i,a))}}function S(e){let n=o;v(),m()?(f=!0,t.setStatus(`loading`)):(c=new AbortController,t.setStatus(`loading`),x(e,n,c.signal))}let C=(e,n)=>t.dispatchEvent(new CustomEvent(`search`,{bubbles:!0,detail:{query:e,seq:n}}));function w(e){o+=1,v(),clearTimeout(s),s=void 0,e.trim().length<g()?(t.setPartOptions([]),t.setStatus(`hint`)):(C(e,o),S(e))}return{mount(e,n,r={}){t=e,a=n;let i=a.search?.value??``;a.search&&r.carry?.query&&i===``&&(a.search.value=r.carry.query),i.trim()!==``&&t._onQueryChange(i)},onQuery(e){if(o+=1,v(),clearTimeout(s),s=void 0,u=e,d=null,f=!1,!p())return!1;if(e.trim().length<g())return t.setPartOptions([]),t.setStatus(`hint`),!0;let n=o;return s=setTimeout(()=>{s=void 0,C(e,n),S(e)},_()),!0},onOpen(){if(p()){if(d!==null){let e=d;d=null,w(e)}else g()===0&&t._query.trim()===``&&w(``)}},onOptions(){f&&(f=!1,t.setStatus(t.options.length?`idle`:`empty`))},onBlur(){if(t.mode!==`search`||!t.hasAttribute(`allow-custom`))return!1;let e=(a.search?.value??``).trim();if(!e||e===String(t.value)||i(t,e))return!1;let r=n(t,e);return r?(t.setError(r),!1):(t.commit(e,{isCustom:!0}),!0)},actionRow(e){if(l=null,t.mode===`tag`||!t.hasAttribute(`allow-custom`))return null;let n=e.trim();return!n||i(t,n)?null:(l={position:`bottom`,label:(t.getAttribute(`add-label`)??`Add '{query}'`).replaceAll(`{query}`,n),value:n},l)},onPick(e){if(!l||e.value!==l.value||e.label!==l.label)return!1;let n=l.value;return l=null,t.commit(n,{isCustom:!0}),!0},renderValue(){let e=t.value;if(!e||t.options.some(t=>String(t.value)===String(e)))return!1;let n=t.getAttribute(`value-label`);return n?(a.value.classList.remove(`wui-select-placeholder`),a.value.textContent=n,!0):!1},teardown(){(s!==void 0||c!==null||f)&&(d=u),f=!1,o+=1,clearTimeout(s),s=void 0,v(),l=null}}}export{a as default};
1
+ import{n as e}from"./devWarn-DXdRWZs3.js";import{i as t}from"./optionLabel-4xjXWy74.js";import{t as n}from"./customRule-Chp7YwFb.js";import{n as r}from"./WuiSelect-DBPre2oe.js";var i=(e,n)=>{let r=n.toLowerCase(),i=e.getAttribute(`value-label`);return i&&String(e.value??``)!==``&&i.toLowerCase()===r?!0:e.options.some(e=>t(e).toLowerCase()===r||String(e.value??``).toLowerCase()===r)};function a(){let t,a,o=0,s,c=null,l=null,u=``,d=null,f=!1,p=()=>r(t),m=()=>typeof t.loadOptions!=`function`&&!t.getAttribute(`source`),h=(e,n,r)=>{let i=t.getAttribute(e);if(i==null||i.trim()===``)return n;let a=Number(i);return r(a)?a:n},g=()=>h(`min-chars`,1,e=>Number.isInteger(e)&&e>=0),_=()=>h(`debounce`,250,e=>Number.isFinite(e)&&e>=0),v=()=>{c?.abort(),c=null};function y(e,n){if(typeof t.loadOptions==`function`)return t.loadOptions(e,{signal:n});let r=t.getAttribute(`source`);if(r===null)throw Error(`search source attribute missing`);let i=`${r}${r.includes(`?`)?`&`:`?`}q=${encodeURIComponent(e)}`;return fetch(i,{signal:n,credentials:`same-origin`,headers:{Accept:`application/json`}}).then(e=>{if(!e.ok)throw Error(`search request failed with status ${e.status}`);return e.json()})}function b(n,r,i){r?(e(`wui-select: search failed`,i),t.setPartOptions([]),t.setStatus(`empty`)):(t.setPartOptions(n),t.setStatus(n.length?`idle`:`empty`))}async function x(e,t,n){let r=[],i=!1,a=null;try{if(r=await y(e,n),!Array.isArray(r))throw TypeError(`search results must be an array`)}catch(e){i=!0,a=e??/* @__PURE__ */ Error(`search failed`)}finally{t===o&&(c=null,b(r,i,a))}}function S(e){let n=o;v(),m()?(f=!0,t.setStatus(`loading`)):(c=new AbortController,t.setStatus(`loading`),x(e,n,c.signal))}let C=(e,n)=>t.dispatchEvent(new CustomEvent(`search`,{bubbles:!0,detail:{query:e,seq:n}}));function w(e){o+=1,v(),clearTimeout(s),s=void 0,e.trim().length<g()?(t.setPartOptions([]),t.setStatus(`hint`)):(C(e,o),S(e))}return{mount(e,n,r={}){t=e,a=n;let i=a.search?.value??``;a.search&&r.carry?.query&&i===``&&(a.search.value=r.carry.query),i.trim()!==``&&t._onQueryChange(i)},onQuery(e){if(o+=1,v(),clearTimeout(s),s=void 0,u=e,d=null,f=!1,!p())return!1;if(e.trim().length<g())return t.setPartOptions([]),t.setStatus(`hint`),!0;let n=o;return s=setTimeout(()=>{s=void 0,C(e,n),S(e)},_()),!0},onOpen(){if(p()){if(d!==null){let e=d;d=null,w(e)}else g()===0&&t._query.trim()===``&&w(``)}},onOptions(){f&&(f=!1,t.setStatus(t.options.length?`idle`:`empty`))},onBlur(){if(t.mode!==`search`||!t.hasAttribute(`allow-custom`))return!1;let e=(a.search?.value??``).trim();if(!e||e===String(t.value)||i(t,e))return!1;let r=n(t,e);return r?(t.setError(r),!1):(t.commit(e,{isCustom:!0}),!0)},actionRow(e){if(l=null,t.mode===`tag`||!t.hasAttribute(`allow-custom`))return null;let n=e.trim();return!n||i(t,n)?null:(l={position:`bottom`,label:(t.getAttribute(`add-label`)??`Add '{query}'`).replaceAll(`{query}`,n),value:n},l)},onPick(e){if(!l||e.value!==l.value||e.label!==l.label)return!1;let n=l.value;return l=null,t.commit(n,{isCustom:!0}),!0},renderValue(){let e=t.value;if(!e||t.options.some(t=>String(t.value)===String(e)))return!1;let n=t.getAttribute(`value-label`);return n?(a.value.classList.remove(`wui-select-placeholder`),a.value.textContent=n,!0):!1},teardown(){(s!==void 0||c!==null||f)&&(d=u),f=!1,o+=1,clearTimeout(s),s=void 0,v(),l=null}}}export{a as default};
package/dist/server.js CHANGED
@@ -1 +1 @@
1
- import{C as e,S as t,T as n,_ as r,a as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,s as v,t as y,u as b,v as x,w as S,x as C,y as w}from"./drawerDiscard-CUN8L47U.js";import{r as T}from"./dom-Do1pAA12.js";import{a as E,c as D,d as O,i as k,l as A,n as j,o as M,r as N,s as P,t as F,u as I}from"./wuiHttp-523iN_RF.js";var L=31536e3,R=/* @__PURE__ */ new WeakMap,z=e=>e>99?`99+`:String(e),B=(e,t)=>Object.entries(t).reduce((e,[t,n])=>e.replaceAll(`{${t}}`,()=>String(n)),e);function V(e,t,n=document){try{n.cookie=`${e}=${t?`1`:`0`}; Path=/; Max-Age=${L}; SameSite=Lax`}catch(e){if(!(e instanceof DOMException&&e.name===`SecurityError`))throw e}}function H(e,t,n,r=document){try{let i=`${e}=`,a=r.cookie.split(`;`).map(e=>e.trim()).find(e=>e.startsWith(i)),o=new Set(a?a.slice(i.length).split(`.`).filter(Boolean):[]);n?o.add(t):o.delete(t),r.cookie=`${e}=${[...o].join(`.`)}; Path=/; Max-Age=${L}; SameSite=Lax`}catch(e){if(!(e instanceof DOMException&&e.name===`SecurityError`))throw e}}var U=e=>{let t=document.createElement(`template`);return t.innerHTML=e,t.content},W=(e,t,n)=>{let r=e?.querySelector(t);return r instanceof n?r:null},G=(e,t,n)=>{let r=e?.closest(t);return r instanceof n?r:null},K=(e,t,n)=>e?[...e.querySelectorAll(t)].filter(e=>e instanceof n):[],q=e=>{if(!(e.target instanceof Element))throw Error(`event target is not an element`);return e.target},J=e=>{let t=e.getAttribute(`href`);if(t===null)throw Error(`search hit has no href`);return t},Y=(e,t)=>{let n=document.createElement(`div`);return n.className=e,n.textContent=t,n};function X(e,t){let n=W(e,`.wui-bell-trigger`,HTMLElement),r=W(e,`.wui-bell-count`,HTMLElement),i=W(e,`[data-wui-bell-live]`,HTMLElement),a=W(e,`[data-wui-bell-list]`,HTMLElement),o=()=>T(a,`bell list missing`),s=W(e,`.wui-bell-menu`,HTMLElement),{src:c,readAction:l}=e.dataset,u=e.dataset.label||`Notifications`,d=e.dataset.emptyText||`You are all caught up.`,f=e.dataset.loadingText??`Loading…`,p=e.dataset.noUnreadText??`No unread notifications`,m=e.dataset.unreadText??`{count} unread notifications`,h=e.dataset.bellLabel??`{label}, {count} unread`,g=Number(e.dataset.pollSeconds??60),_=P(),v=Number(e.dataset.unread)||0,y=(t,a=!0)=>{let o=Math.max(0,Number(t)||0),s=o!==v;v=o,e.dataset.unread=String(o),r&&(r.textContent=z(o),r.hidden=o===0),n?.setAttribute(`aria-label`,o===0?u:B(h,{label:u,count:z(o)})),a&&s&&i&&(i.textContent=o===0?p:B(m,{count:z(o)}))},b=()=>s?.classList.contains(`show`)??!1,x=()=>{let e=Y(`wui-bell-state`,`Could not load notifications. `),t=document.createElement(`button`);t.type=`button`,t.className=`btn btn-link btn-sm`,t.dataset.wuiBellRetry=``,t.textContent=`Retry`,e.append(t),o().replaceChildren(e)},S=async t=>{if(t&&(o().setAttribute(`aria-busy`,`true`),o().querySelector(`.wui-bell-item`)||o().replaceChildren(Y(`wui-bell-state`,f))),c===void 0)throw Error(`bell has no data-src`);let n=await _.run(c);if(n.kind===`aborted`||n.kind===`stale`||n.kind===`session`)return;if(o().removeAttribute(`aria-busy`),!n.ok){t&&x();return}let r=U(n.html),i=W(r,`[data-wui-unread]`,HTMLElement),a=i?Number(i.getAttribute(`data-wui-unread`)):v;y(a),(t||b())&&(r.querySelector(`.wui-bell-item`)?o().replaceChildren(r):o().replaceChildren(Y(`wui-bell-state`,d))),e.dispatchEvent(new CustomEvent(`wui:notifications:loaded`,{bubbles:!0,detail:{unread:a}}))};e.addEventListener(`show.bs.dropdown`,()=>S(!0)),e.addEventListener(`click`,async e=>{let t=q(e);if(t.closest(`[data-wui-bell-retry]`)){await S(!0);return}let n=G(t,`[data-wui-bell-read]`,HTMLButtonElement);if(!n||!l)return;n.disabled=!0;let r=await A(l,{method:`POST`});n.disabled=!1,r.ok&&(y(0),await S(!0))});let C=null,w=()=>{g>0&&C===null&&(C=setInterval(()=>S(b()),g*1e3))},E=()=>{C!==null&&clearInterval(C),C=null},D=()=>{document.hidden?E():(S(b()),w())};return g>0&&(document.addEventListener(`visibilitychange`,D),document.hidden||w()),t.push(()=>{E(),_.abort(),document.removeEventListener(`visibilitychange`,D)}),{setUnread:e=>y(e),refresh:()=>S(b())}}var Z=e=>e instanceof HTMLElement&&(e.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName)),Q=(e,t,n)=>`${e}${e.includes(`?`)?`&`:`?`}${encodeURIComponent(t)}=${encodeURIComponent(n)}`;function ee(e,t){let n=T(W(e,`input.search-input`,HTMLInputElement),`search input missing`),r=W(e,`.wui-topsearch-results`,HTMLElement),i=()=>T(r,`search results missing`),a=W(e,`.wui-topsearch-open`,HTMLElement),o=W(e,`[data-wui-topsearch-live]`,HTMLElement),{src:s,param:c=`q`,resultsHref:l}=e.dataset,u=Number(e.dataset.minChars??2),d=Number(e.dataset.debounceMs??250),f=e.dataset.noResultsText??`No results`,p=e.dataset.resultsCountText??`{count} results`,m=e.dataset.resultCountText??`{count} result`,h=P(),g,_=-1,v=()=>K(i(),`.wui-topsearch-hit`,HTMLElement),y=e=>{let t=v();_=t.length===0?-1:(e+t.length)%t.length,t.forEach((e,t)=>{let n=t===_;e.classList.toggle(`is-active`,n),e.setAttribute(`aria-selected`,n?`true`:`false`)});let r=_>=0?t[_]:void 0;r?(n.setAttribute(`aria-activedescendant`,r.id),r.scrollIntoView?.({block:`nearest`})):n.removeAttribute(`aria-activedescendant`)},b=()=>{i().hidden=!0,n.setAttribute(`aria-expanded`,`false`),n.removeAttribute(`aria-activedescendant`),_=-1},x=()=>{i().hidden=!1,n.setAttribute(`aria-expanded`,`true`)},S=t=>{e.classList.toggle(`is-open`,t),a?.setAttribute(`aria-expanded`,t?`true`:`false`)},C=t=>{let n=new CustomEvent(`wui:search:select`,{bubbles:!0,cancelable:!0,detail:{href:t}});e.dispatchEvent(n)&&window.location.assign(t)},w=async t=>{if(e.classList.add(`is-loading`),s===void 0)throw Error(`search has no data-src`);let n=await h.run(Q(s,c,t));if(n.kind!==`aborted`&&n.kind!==`stale`&&n.kind!==`session`){if(e.classList.remove(`is-loading`),n.ok){let e=U(n.html),t=W(e,`[data-wui-count]`,HTMLElement);i().replaceChildren(e),v().forEach((e,t)=>{e.id=`${i().id}-opt-${t}`});let r=t?Number(t.getAttribute(`data-wui-count`)):v().length;o&&(o.textContent=r===0?f:B(r===1?m:p,{count:r}))}else i().replaceChildren(Y(`wui-topsearch-empty`,`Search is unavailable right now.`));_=-1,x()}};n.addEventListener(`input`,()=>{clearTimeout(g);let t=n.value.trim();t.length<u?(h.abort(),e.classList.remove(`is-loading`),i().replaceChildren(),b()):g=setTimeout(()=>w(t),d)}),n.addEventListener(`keydown`,t=>{if(t.key===`ArrowDown`||t.key===`ArrowUp`){if(i().hidden||v().length===0)return;t.preventDefault(),y(_+(t.key===`ArrowDown`?1:-1))}else if(t.key===`Enter`){let e=v(),r=_>=0?e[_]:void 0;!i().hidden&&r?(t.preventDefault(),C(J(r))):l&&n.value.trim()!==``&&(t.preventDefault(),C(Q(l,c,n.value.trim())))}else t.key===`Escape`&&(i().hidden?e.classList.contains(`is-open`)&&(t.preventDefault(),t.stopPropagation(),S(!1),a?.focus()):(t.preventDefault(),t.stopPropagation(),b()))}),i().addEventListener(`click`,e=>{let t=G(q(e),`.wui-topsearch-hit`,HTMLElement);!t||e.ctrlKey||e.metaKey||e.shiftKey||e.button===1||(e.preventDefault(),C(J(t)))}),a?.addEventListener(`click`,()=>{let t=!e.classList.contains(`is-open`);S(t),t&&n.focus()});let E=e=>{e.key!==`/`||e.ctrlKey||e.metaKey||e.altKey||Z(e.target)||(e.preventDefault(),S(!0),n.focus())},D=t=>{t.target instanceof Node&&e.contains(t.target)||(b(),e.classList.contains(`is-open`)&&S(!1))};document.addEventListener(`keydown`,E),document.addEventListener(`pointerdown`,D),t.push(()=>{clearTimeout(g),h.abort(),document.removeEventListener(`keydown`,E),document.removeEventListener(`pointerdown`,D)})}function te(e){let t=[],n=e.dataset.wuiCollapsedCookie;n&&e.addEventListener(`wui:shell:collapse`,e=>{V(n,!!e.detail?.collapsed)});let r=e.dataset.wuiFoldedCookie;r&&e.addEventListener(`wui:shell:nav-fold`,e=>{H(r,e.detail?.key,!!e.detail?.folded)}),e.addEventListener(`click`,t=>{q(t).closest(`[data-wui-tabbar-more]`)&&W(e,`[data-app-shell-menu]`,HTMLElement)?.click()});let i=W(e,`[data-wui-bell]`,HTMLElement),a=i?X(i,t):null,o=W(e,`[data-wui-topsearch]`,HTMLElement);o&&ee(o,t);let s={el:e,setUnread(e){T(a,`WUI.shell: this <app-shell> has no <app-shell-notifications>.`).setUnread(e)},refreshNotifications(){return T(a,`WUI.shell: this <app-shell> has no <app-shell-notifications>.`).refresh()},get collapsed(){return e.classList.contains(`collapsed`)},set collapsed(t){if(!!t===e.classList.contains(`collapsed`))return;let n=W(e,`[data-app-shell-collapse]`,HTMLElement);n?n.click():e.classList.toggle(`collapsed`,!!t)}};R.set(e,s);let c=n=>{if(n.target===e||n.target instanceof Node&&n.target.contains(e)){for(let e of t)e();R.delete(e),delete e.dataset.wuiPartsWired,document.removeEventListener(`wui:teardown`,c)}};return document.addEventListener(`wui:teardown`,c),s}function $(e=document){let t=[];e instanceof HTMLElement&&e.matches(`[data-app-shell]`)&&t.push(e),t.push(...K(e,`[data-app-shell]`,HTMLElement));for(let e of t)e.dataset.wuiPartsWired||(e.dataset.wuiPartsWired=`1`,te(e))}function ne(e){let t=G(e,`[data-app-shell]`,HTMLElement);return t?(R.has(t)||$(t),R.get(t)??null):null}export{f as CONFIRM_DIALOG_ID,b as CONFIRM_TONES,F as CSRF_META_NAME,j as DEFAULT_CSRF_HEADER,y as DISCARD_EVENT,m as DISCARD_TEXT,s as FLASH_STORAGE_KEY,c as FLASH_VARIANTS,N as HTTP_KINDS,g as SERVER_ACTION_TEXT,I as TOAST_ACTION_METHODS,C as TOAST_ACTION_MS,i as UNSAVED_TEXT,k as WUI_HEADERS,E as classifyStatus,l as closeRemotePane,M as configureCsrf,p as confirmAction,_ as createDiscardPrompt,P as createRequestQueue,h as formValues,S as getServerTable,ne as getShell,d as initDrawerDiscard,r as initRemoteModals,u as initServerActions,n as initServerTables,$ as initShellParts,v as initUnsavedChanges,x as loadRemoteDrawer,w as loadRemoteModal,a as loadRemotePane,O as parseToastAction,D as readCsrf,o as resetUnsavedChanges,t as runToastAction,e as showResultToast,A as wuiFetch};
1
+ import{C as e,S as t,T as n,_ as r,a as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,s as v,t as y,u as b,v as x,w as S,x as C,y as w}from"./drawerDiscard-C0yRSl1I.js";import{r as T}from"./dom-Do1pAA12.js";import{a as E,c as D,d as O,i as k,l as A,n as j,o as M,r as N,s as P,t as F,u as I}from"./wuiHttp-DGbD7Fra.js";var L=31536e3,R=/* @__PURE__ */ new WeakMap,z=e=>e>99?`99+`:String(e),B=(e,t)=>Object.entries(t).reduce((e,[t,n])=>e.replaceAll(`{${t}}`,()=>String(n)),e);function V(e,t,n=document){try{n.cookie=`${e}=${t?`1`:`0`}; Path=/; Max-Age=${L}; SameSite=Lax`}catch(e){if(!(e instanceof DOMException&&e.name===`SecurityError`))throw e}}function H(e,t,n,r=document){try{let i=`${e}=`,a=r.cookie.split(`;`).map(e=>e.trim()).find(e=>e.startsWith(i)),o=new Set(a?a.slice(i.length).split(`.`).filter(Boolean):[]);n?o.add(t):o.delete(t),r.cookie=`${e}=${[...o].join(`.`)}; Path=/; Max-Age=${L}; SameSite=Lax`}catch(e){if(!(e instanceof DOMException&&e.name===`SecurityError`))throw e}}var U=e=>{let t=document.createElement(`template`);return t.innerHTML=e,t.content},W=(e,t,n)=>{let r=e?.querySelector(t);return r instanceof n?r:null},G=(e,t,n)=>{let r=e?.closest(t);return r instanceof n?r:null},K=(e,t,n)=>e?[...e.querySelectorAll(t)].filter(e=>e instanceof n):[],q=e=>{if(!(e.target instanceof Element))throw Error(`event target is not an element`);return e.target},J=e=>{let t=e.getAttribute(`href`);if(t===null)throw Error(`search hit has no href`);return t},Y=(e,t)=>{let n=document.createElement(`div`);return n.className=e,n.textContent=t,n};function X(e,t){let n=W(e,`.wui-bell-trigger`,HTMLElement),r=W(e,`.wui-bell-count`,HTMLElement),i=W(e,`[data-wui-bell-live]`,HTMLElement),a=W(e,`[data-wui-bell-list]`,HTMLElement),o=()=>T(a,`bell list missing`),s=W(e,`.wui-bell-menu`,HTMLElement),{src:c,readAction:l}=e.dataset,u=e.dataset.label||`Notifications`,d=e.dataset.emptyText||`You are all caught up.`,f=e.dataset.loadingText??`Loading…`,p=e.dataset.noUnreadText??`No unread notifications`,m=e.dataset.unreadText??`{count} unread notifications`,h=e.dataset.bellLabel??`{label}, {count} unread`,g=Number(e.dataset.pollSeconds??60),_=P(),v=Number(e.dataset.unread)||0,y=(t,a=!0)=>{let o=Math.max(0,Number(t)||0),s=o!==v;v=o,e.dataset.unread=String(o),r&&(r.textContent=z(o),r.hidden=o===0),n?.setAttribute(`aria-label`,o===0?u:B(h,{label:u,count:z(o)})),a&&s&&i&&(i.textContent=o===0?p:B(m,{count:z(o)}))},b=()=>s?.classList.contains(`show`)??!1,x=()=>{let e=Y(`wui-bell-state`,`Could not load notifications. `),t=document.createElement(`button`);t.type=`button`,t.className=`btn btn-link btn-sm`,t.dataset.wuiBellRetry=``,t.textContent=`Retry`,e.append(t),o().replaceChildren(e)},S=async t=>{if(t&&(o().setAttribute(`aria-busy`,`true`),o().querySelector(`.wui-bell-item`)||o().replaceChildren(Y(`wui-bell-state`,f))),c===void 0)throw Error(`bell has no data-src`);let n=await _.run(c);if(n.kind===`aborted`||n.kind===`stale`||n.kind===`session`)return;if(o().removeAttribute(`aria-busy`),!n.ok){t&&x();return}let r=U(n.html),i=W(r,`[data-wui-unread]`,HTMLElement),a=i?Number(i.getAttribute(`data-wui-unread`)):v;y(a),(t||b())&&(r.querySelector(`.wui-bell-item`)?o().replaceChildren(r):o().replaceChildren(Y(`wui-bell-state`,d))),e.dispatchEvent(new CustomEvent(`wui:notifications:loaded`,{bubbles:!0,detail:{unread:a}}))};e.addEventListener(`show.bs.dropdown`,()=>S(!0)),e.addEventListener(`click`,async e=>{let t=q(e);if(t.closest(`[data-wui-bell-retry]`)){await S(!0);return}let n=G(t,`[data-wui-bell-read]`,HTMLButtonElement);if(!n||!l)return;n.disabled=!0;let r=await A(l,{method:`POST`});n.disabled=!1,r.ok&&(y(0),await S(!0))});let C=null,w=()=>{g>0&&C===null&&(C=setInterval(()=>S(b()),g*1e3))},E=()=>{C!==null&&clearInterval(C),C=null},D=()=>{document.hidden?E():(S(b()),w())};return g>0&&(document.addEventListener(`visibilitychange`,D),document.hidden||w()),t.push(()=>{E(),_.abort(),document.removeEventListener(`visibilitychange`,D)}),{setUnread:e=>y(e),refresh:()=>S(b())}}var Z=e=>e instanceof HTMLElement&&(e.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName)),Q=(e,t,n)=>`${e}${e.includes(`?`)?`&`:`?`}${encodeURIComponent(t)}=${encodeURIComponent(n)}`;function ee(e,t){let n=T(W(e,`input.search-input`,HTMLInputElement),`search input missing`),r=W(e,`.wui-topsearch-results`,HTMLElement),i=()=>T(r,`search results missing`),a=W(e,`.wui-topsearch-open`,HTMLElement),o=W(e,`[data-wui-topsearch-live]`,HTMLElement),{src:s,param:c=`q`,resultsHref:l}=e.dataset,u=Number(e.dataset.minChars??2),d=Number(e.dataset.debounceMs??250),f=e.dataset.noResultsText??`No results`,p=e.dataset.resultsCountText??`{count} results`,m=e.dataset.resultCountText??`{count} result`,h=P(),g,_=-1,v=()=>K(i(),`.wui-topsearch-hit`,HTMLElement),y=e=>{let t=v();_=t.length===0?-1:(e+t.length)%t.length,t.forEach((e,t)=>{let n=t===_;e.classList.toggle(`is-active`,n),e.setAttribute(`aria-selected`,n?`true`:`false`)});let r=_>=0?t[_]:void 0;r?(n.setAttribute(`aria-activedescendant`,r.id),r.scrollIntoView?.({block:`nearest`})):n.removeAttribute(`aria-activedescendant`)},b=()=>{i().hidden=!0,n.setAttribute(`aria-expanded`,`false`),n.removeAttribute(`aria-activedescendant`),_=-1},x=()=>{i().hidden=!1,n.setAttribute(`aria-expanded`,`true`)},S=t=>{e.classList.toggle(`is-open`,t),a?.setAttribute(`aria-expanded`,t?`true`:`false`)},C=t=>{let n=new CustomEvent(`wui:search:select`,{bubbles:!0,cancelable:!0,detail:{href:t}});e.dispatchEvent(n)&&window.location.assign(t)},w=async t=>{if(e.classList.add(`is-loading`),s===void 0)throw Error(`search has no data-src`);let n=await h.run(Q(s,c,t));if(n.kind!==`aborted`&&n.kind!==`stale`&&n.kind!==`session`){if(e.classList.remove(`is-loading`),n.ok){let e=U(n.html),t=W(e,`[data-wui-count]`,HTMLElement);i().replaceChildren(e),v().forEach((e,t)=>{e.id=`${i().id}-opt-${t}`});let r=t?Number(t.getAttribute(`data-wui-count`)):v().length;o&&(o.textContent=r===0?f:B(r===1?m:p,{count:r}))}else i().replaceChildren(Y(`wui-topsearch-empty`,`Search is unavailable right now.`));_=-1,x()}};n.addEventListener(`input`,()=>{clearTimeout(g);let t=n.value.trim();t.length<u?(h.abort(),e.classList.remove(`is-loading`),i().replaceChildren(),b()):g=setTimeout(()=>w(t),d)}),n.addEventListener(`keydown`,t=>{if(t.key===`ArrowDown`||t.key===`ArrowUp`){if(i().hidden||v().length===0)return;t.preventDefault(),y(_+(t.key===`ArrowDown`?1:-1))}else if(t.key===`Enter`){let e=v(),r=_>=0?e[_]:void 0;!i().hidden&&r?(t.preventDefault(),C(J(r))):l&&n.value.trim()!==``&&(t.preventDefault(),C(Q(l,c,n.value.trim())))}else t.key===`Escape`&&(i().hidden?e.classList.contains(`is-open`)&&(t.preventDefault(),t.stopPropagation(),S(!1),a?.focus()):(t.preventDefault(),t.stopPropagation(),b()))}),i().addEventListener(`click`,e=>{let t=G(q(e),`.wui-topsearch-hit`,HTMLElement);!t||e.ctrlKey||e.metaKey||e.shiftKey||e.button===1||(e.preventDefault(),C(J(t)))}),a?.addEventListener(`click`,()=>{let t=!e.classList.contains(`is-open`);S(t),t&&n.focus()});let E=e=>{e.key!==`/`||e.ctrlKey||e.metaKey||e.altKey||Z(e.target)||(e.preventDefault(),S(!0),n.focus())},D=t=>{t.target instanceof Node&&e.contains(t.target)||(b(),e.classList.contains(`is-open`)&&S(!1))};document.addEventListener(`keydown`,E),document.addEventListener(`pointerdown`,D),t.push(()=>{clearTimeout(g),h.abort(),document.removeEventListener(`keydown`,E),document.removeEventListener(`pointerdown`,D)})}function te(e){let t=[],n=e.dataset.wuiCollapsedCookie;n&&e.addEventListener(`wui:shell:collapse`,e=>{V(n,!!e.detail?.collapsed)});let r=e.dataset.wuiFoldedCookie;r&&e.addEventListener(`wui:shell:nav-fold`,e=>{H(r,e.detail?.key,!!e.detail?.folded)}),e.addEventListener(`click`,t=>{q(t).closest(`[data-wui-tabbar-more]`)&&W(e,`[data-app-shell-menu]`,HTMLElement)?.click()});let i=W(e,`[data-wui-bell]`,HTMLElement),a=i?X(i,t):null,o=W(e,`[data-wui-topsearch]`,HTMLElement);o&&ee(o,t);let s={el:e,setUnread(e){T(a,`WUI.shell: this <app-shell> has no <app-shell-notifications>.`).setUnread(e)},refreshNotifications(){return T(a,`WUI.shell: this <app-shell> has no <app-shell-notifications>.`).refresh()},get collapsed(){return e.classList.contains(`collapsed`)},set collapsed(t){if(!!t===e.classList.contains(`collapsed`))return;let n=W(e,`[data-app-shell-collapse]`,HTMLElement);n?n.click():e.classList.toggle(`collapsed`,!!t)}};R.set(e,s);let c=n=>{if(n.target===e||n.target instanceof Node&&n.target.contains(e)){for(let e of t)e();R.delete(e),delete e.dataset.wuiPartsWired,document.removeEventListener(`wui:teardown`,c)}};return document.addEventListener(`wui:teardown`,c),s}function $(e=document){let t=[];e instanceof HTMLElement&&e.matches(`[data-app-shell]`)&&t.push(e),t.push(...K(e,`[data-app-shell]`,HTMLElement));for(let e of t)e.dataset.wuiPartsWired||(e.dataset.wuiPartsWired=`1`,te(e))}function ne(e){let t=G(e,`[data-app-shell]`,HTMLElement);return t?(R.has(t)||$(t),R.get(t)??null):null}export{f as CONFIRM_DIALOG_ID,b as CONFIRM_TONES,F as CSRF_META_NAME,j as DEFAULT_CSRF_HEADER,y as DISCARD_EVENT,m as DISCARD_TEXT,s as FLASH_STORAGE_KEY,c as FLASH_VARIANTS,N as HTTP_KINDS,g as SERVER_ACTION_TEXT,I as TOAST_ACTION_METHODS,C as TOAST_ACTION_MS,i as UNSAVED_TEXT,k as WUI_HEADERS,E as classifyStatus,l as closeRemotePane,M as configureCsrf,p as confirmAction,_ as createDiscardPrompt,P as createRequestQueue,h as formValues,S as getServerTable,ne as getShell,d as initDrawerDiscard,r as initRemoteModals,u as initServerActions,n as initServerTables,$ as initShellParts,v as initUnsavedChanges,x as loadRemoteDrawer,w as loadRemoteModal,a as loadRemotePane,O as parseToastAction,D as readCsrf,o as resetUnsavedChanges,t as runToastAction,e as showResultToast,A as wuiFetch};