@mhmo91/schmancy 0.4.8 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{avatar-BMzBsIWs.cjs → avatar-BK-Ikpdw.cjs} +2 -2
- package/dist/{avatar-BMzBsIWs.cjs.map → avatar-BK-Ikpdw.cjs.map} +1 -1
- package/dist/{avatar-DUPqOrZp.js → avatar-Bp0t8NU5.js} +3 -3
- package/dist/{avatar-DUPqOrZp.js.map → avatar-Bp0t8NU5.js.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-DN0v_ykN.js → date-range-BLs8_7pI.js} +2 -2
- package/dist/{date-range-DN0v_ykN.js.map → date-range-BLs8_7pI.js.map} +1 -1
- package/dist/{date-range-BPVaXilO.cjs → date-range-Ch_Ir3s1.cjs} +2 -2
- package/dist/{date-range-BPVaXilO.cjs.map → date-range-Ch_Ir3s1.cjs.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{dialog-service-BgqAlT7T.cjs → dialog-service-BZZK8N6A.cjs} +2 -2
- package/dist/dialog-service-BZZK8N6A.cjs.map +1 -0
- package/dist/dialog-service-DFMlRcXf.js +128 -0
- package/dist/dialog-service-DFMlRcXf.js.map +1 -0
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +3 -3
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/package.json +1 -1
- package/dist/dialog-service-BgqAlT7T.cjs.map +0 -1
- package/dist/dialog-service-CnjZCTMj.js +0 -127
- package/dist/dialog-service-CnjZCTMj.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-BPVaXilO.cjs","sources":["../../../../.yarn/berry/cache/dayjs-npm-1.11.13-d478bb9479-10c0.zip/node_modules/dayjs/dayjs.min.js","../../../../.yarn/berry/cache/dayjs-npm-1.11.13-d478bb9479-10c0.zip/node_modules/dayjs/plugin/quarterOfYear.js","../src/date-range/date-utils.ts","../src/date-range/date-range-presets.ts","../src/date-range/date-range-helpers.ts","../src/date-range/date-range.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","import dayjs from 'dayjs'\n\ntype DateFormat = 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\n/**\n * Ensures that a date string conforms to a specific format.\n * If the date is already in the correct format, it returns the original string.\n * If the date is in a different format, it attempts to convert it to the specified format.\n * If the date is invalid or cannot be converted, it returns null.\n *\n * @param dateString The date string to validate and format.\n * @param expectedFormat The expected date format (e.g., 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm').\n * @returns The formatted date string, or null if the date is invalid.\n */\nfunction enforceDateFormat(dateString: string | undefined, expectedFormat: DateFormat): string | null {\n\tif (!dateString) {\n\t\treturn null // Or handle the undefined case differently if needed\n\t}\n\n\tconst parsedDate = dayjs(dateString)\n\n\tif (!parsedDate.isValid()) {\n\t\treturn null // Date is invalid\n\t}\n\n\treturn parsedDate.format(expectedFormat)\n}\n\n/**\n * Validates if the initial date range values are in the expected format.\n *\n * @param dateFrom The dateFrom value to validate.\n * @param dateTo The dateTo value to validate.\n * @param expectedFormat The expected date format.\n * @returns An object indicating whether each date is valid, and the formatted date or null if invalid.\n */\nfunction validateInitialDateRange(\n\tdateFrom: string | undefined,\n\tdateTo: string | undefined,\n\texpectedFormat: DateFormat,\n): {\n\tdateFrom: string | null\n\tdateTo: string | null\n\tisValid: boolean\n} {\n\tconst formattedDateFrom = enforceDateFormat(dateFrom, expectedFormat)\n\tconst formattedDateTo = enforceDateFormat(dateTo, expectedFormat)\n\n\tconst isValid = formattedDateFrom !== null && formattedDateTo !== null\n\n\treturn {\n\t\tdateFrom: formattedDateFrom,\n\t\tdateTo: formattedDateTo,\n\t\tisValid,\n\t}\n}\n\nexport { validateInitialDateRange }\n","import dayjs from 'dayjs'\r\n\r\nexport type PresetUnit = dayjs.OpUnitType | 'quarter'\r\n\r\nexport interface DateRangePreset {\r\n\tlabel: string\r\n\trange: { dateFrom: string; dateTo: string }\r\n\tstep: PresetUnit\r\n}\r\n\r\nexport interface PresetCategory {\r\n\tname: string\r\n\tpresets: DateRangePreset[]\r\n}\r\n\r\n/**\r\n * Generate date range presets for different time periods\r\n */\r\nexport function generatePresetCategories(format: string, includeTime: boolean = false): PresetCategory[] {\r\n\tconst categories: PresetCategory[] = []\r\n\r\n\t// Hours category (only for datetime-local)\r\n\tif (includeTime) {\r\n\t\tcategories.push({\r\n\t\t\tname: 'Hours',\r\n\t\t\tpresets: [\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 24 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(24, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 12 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(12, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t})\r\n\t}\r\n\r\n\t// Days category\r\n\tcategories.push({\r\n\t\tname: 'Days',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Today',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Yesterday',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'days').startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'days').endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t...generateLastNDaysPresets([7, 14, 30, 60, 90], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Weeks category\r\n\tcategories.push({\r\n\t\tname: 'Weeks',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'weeks').startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'weeks').endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t...generateLastNWeeksPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Months category\r\n\tcategories.push({\r\n\t\tname: 'Months',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'month').startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'month').endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t...generateLastNMonthsPresets([3, 6], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Quarters category\r\n\tcategories.push({\r\n\t\tname: 'Quarters',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'quarter').startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'quarter').endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t...generateLastNQuartersPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Years category\r\n\tcategories.push({\r\n\t\tname: 'Years',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'year').startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'year').endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Year to Date',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t],\r\n\t})\r\n\r\n\treturn categories\r\n}\r\n\r\n// Helper functions to generate preset arrays\r\nfunction generateLastNDaysPresets(days: number[], format: string): DateRangePreset[] {\r\n\treturn days.map(n => ({\r\n\t\tlabel: `Last ${n} Days`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n - 1, 'days').startOf('day').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'day' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNWeeksPresets(weeks: number[], format: string): DateRangePreset[] {\r\n\treturn weeks.map(n => ({\r\n\t\tlabel: `Last ${n} Weeks`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'weeks').startOf('week').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'week' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNMonthsPresets(months: number[], format: string): DateRangePreset[] {\r\n\treturn months.map(n => ({\r\n\t\tlabel: `Last ${n} Months`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'months').startOf('month').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'month' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNQuartersPresets(quarters: number[], format: string): DateRangePreset[] {\r\n\treturn quarters.map(n => ({\r\n\t\tlabel: `Last ${n} Quarters`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'quarters').startOf('quarter').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'quarter' as PresetUnit,\r\n\t}))\r\n}","import dayjs from 'dayjs'\r\nimport { PresetUnit } from './date-range-presets'\r\n\r\n/**\r\n * Format a date range into a human-readable string\r\n */\r\nexport function formatDateRange(\r\n\tfromValue: string,\r\n\ttoValue: string,\r\n\ttype: 'date' | 'datetime-local',\r\n\tplaceholder: string\r\n): string {\r\n\tif (!fromValue || !toValue) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\tconst fromDate = dayjs(fromValue)\r\n\tconst toDate = dayjs(toValue)\r\n\r\n\tif (!fromDate.isValid() || !toDate.isValid()) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\t// Format times if needed (for datetime-local)\r\n\tconst fromTime = type === 'datetime-local' ? fromDate.format(' h:mm A') : ''\r\n\tconst toTime = type === 'datetime-local' ? toDate.format(' h:mm A') : ''\r\n\r\n\t// Check if same day\r\n\tif (fromDate.isSame(toDate, 'day')) {\r\n\t\treturn `${fromDate.format('MMM D, YYYY')}${fromTime}`\r\n\t}\r\n\r\n\t// Check if same month and year\r\n\tif (fromDate.isSame(toDate, 'month') && fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('MMM D')}-${toDate.format('D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Check if same year\r\n\tif (fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('MMM D')} - ${toDate.format('MMM D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Different years\r\n\treturn `${fromDate.format('MMM D, YYYY')}${fromTime} - ${toDate.format('MMM D, YYYY')}${toTime}`\r\n}\r\n\r\n/**\r\n * Detect the type of date range (full month, full quarter, etc.)\r\n */\r\nexport interface DateRangeType {\r\n\tisFullMonth: boolean\r\n\tisFullQuarter: boolean\r\n\tisFullYear: boolean\r\n\tisFullWeek: boolean\r\n}\r\n\r\nexport function detectDateRangeType(fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): DateRangeType {\r\n\treturn {\r\n\t\tisFullMonth: fromDate.date() === 1 && toDate.isSame(fromDate.endOf('month'), 'day'),\r\n\t\tisFullQuarter: fromDate.isSame(fromDate.startOf('quarter'), 'day') && toDate.isSame(toDate.endOf('quarter'), 'day'),\r\n\t\tisFullYear: fromDate.isSame(fromDate.startOf('year'), 'day') && toDate.isSame(toDate.endOf('year'), 'day'),\r\n\t\tisFullWeek: fromDate.day() === 0 && toDate.day() === 6 && toDate.diff(fromDate, 'days') === 6,\r\n\t}\r\n}\r\n\r\n/**\r\n * Calculate the appropriate shift unit and amount for a date range\r\n */\r\nexport function calculateShiftParams(\r\n\tfromDate: dayjs.Dayjs,\r\n\ttoDate: dayjs.Dayjs,\r\n\tactivePresetStep?: PresetUnit\r\n): { unit: PresetUnit; amount: number } {\r\n\tif (activePresetStep) {\r\n\t\treturn { unit: activePresetStep, amount: 1 }\r\n\t}\r\n\r\n\tconst rangeDurationInDays = toDate.diff(fromDate, 'day')\r\n\r\n\t// For very long ranges, use years\r\n\tif (rangeDurationInDays >= 360) {\r\n\t\treturn { unit: 'year', amount: Math.round(rangeDurationInDays / 365) }\r\n\t}\r\n\t// For long ranges, use quarters\r\n\telse if (rangeDurationInDays >= 90) {\r\n\t\treturn { unit: 'quarter', amount: Math.round(rangeDurationInDays / 90) }\r\n\t}\r\n\t// For medium-long ranges, use months\r\n\telse if (rangeDurationInDays >= 30) {\r\n\t\treturn { unit: 'month', amount: Math.round(rangeDurationInDays / 30) }\r\n\t}\r\n\t// For medium ranges, use weeks\r\n\telse if (rangeDurationInDays >= 7) {\r\n\t\treturn { unit: 'week', amount: Math.round(rangeDurationInDays / 7) }\r\n\t}\r\n\t// For shorter ranges, use days\r\n\telse {\r\n\t\treturn { unit: 'day', amount: rangeDurationInDays + 1 }\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper method to safely add/subtract quarter values\r\n */\r\nexport function adjustQuarter(date: dayjs.Dayjs, amount: number, direction: 1 | -1): dayjs.Dayjs {\r\n\t// Get current quarter (1-4)\r\n\tconst currentQuarter = date.quarter()\r\n\r\n\t// Calculate new quarter\r\n\tlet newQuarter = currentQuarter + direction * amount\r\n\tlet yearAdjustment = 0\r\n\r\n\t// Handle year boundaries\r\n\twhile (newQuarter > 4) {\r\n\t\tnewQuarter -= 4\r\n\t\tyearAdjustment += 1\r\n\t}\r\n\r\n\twhile (newQuarter < 1) {\r\n\t\tnewQuarter += 4\r\n\t\tyearAdjustment -= 1\r\n\t}\r\n\r\n\t// Adjust year if needed\r\n\tconst adjustedDate = date.add(yearAdjustment, 'year')\r\n\r\n\t// Set to the start of the new quarter\r\n\tconst newDate = adjustedDate.month((newQuarter - 1) * 3)\r\n\r\n\t// Maintain the same day of month if possible\r\n\tconst daysInMonth = newDate.daysInMonth()\r\n\tconst targetDay = Math.min(date.date(), daysInMonth)\r\n\r\n\treturn newDate.date(targetDay)\r\n}","import { $LitElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { html, PropertyValues, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { debounceTime, fromEvent, takeUntil, timer } from 'rxjs'\nimport { $dialog } from '../dialog/dialog-service'\nimport { validateInitialDateRange } from './date-utils'\nimport { DateRangePreset, PresetCategory, generatePresetCategories } from './date-range-presets'\nimport { formatDateRange, detectDateRangeType, calculateShiftParams, adjustQuarter } from './date-range-helpers'\n\n// Add quarter plugin to dayjs\ndayjs.extend(quarterOfYear)\n\nexport type SchmancyDateRangeChangeEvent = CustomEvent<{\n\tdateFrom: string\n\tdateTo: string\n}>\n\n/**\n * A date range selector that supports presets and manual date input.\n *\n * @element schmancy-date-range\n * @fires change - Fired when the date range changes with dateFrom and dateTo values\n */\n@customElement('schmancy-date-range')\nexport class SchmancyDateRange extends $LitElement() {\n\t// Core properties\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\n\t// Enhanced functionality\n\t@property({ type: Array }) customPresets: Array<{\n\t\tlabel: string\n\t\tdateFrom: string\n\t\tdateTo: string\n\t}> = []\n\t@property({ type: String }) format?: string\n\t@property({ type: Boolean }) disabled = false\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = 'Select date range'\n\t@property({ type: Boolean }) clearable = true\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private selectedDateRange: string = ''\n\t@state() private activePreset: string | null = null\n\t@state() private announceMessage: string = ''\n\t@state() private isMobile = false\n\n\t// Default presets\n\tprivate presetRanges: DateRangePreset[] = []\n\n\t// Categorized presets\n\tprivate presetCategories: PresetCategory[] = []\n\n\t// Memoization cache\n\tprivate memoizedPresets = new Map<string, PresetCategory[]>()\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.initPresetRanges()\n\t\tthis.checkMobileView()\n\n\t\t// Validate initial date range\n\t\tconst dateFormat = this.getDateFormat() as 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\t\tconst validatedRange = validateInitialDateRange(this.dateFrom.value, this.dateTo.value, dateFormat)\n\n\t\tif (validatedRange.isValid) {\n\t\t\tthis.dateFrom.value = validatedRange.dateFrom!\n\t\t\tthis.dateTo.value = validatedRange.dateTo!\n\t\t\tthis.updateSelectedDateRange()\n\t\t} else {\n\t\t\tconst now = dayjs().format(dateFormat)\n\t\t\tthis.dateFrom.value = now\n\t\t\tthis.dateTo.value = now\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\n\t\t// Set up global event handlers using RxJS\n\t\tthis.setupEventHandlers()\n\t}\n\n\tprivate setupEventHandlers() {\n\t\t// Handle keyboard navigation\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.handleKeyboardNavigation(event)\n\t\t\t})\n\n\t\t// Handle window resize with debouncing\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(150),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.checkMobileView()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (\n\t\t\t(changedProps.has('dateFrom') || changedProps.has('dateTo')) &&\n\t\t\t(this.dateFrom?.value !== undefined || this.dateTo?.value !== undefined)\n\t\t) {\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\t}\n\n\tprivate initPresetRanges() {\n\t\tconst format = this.getDateFormat()\n\t\tconst cacheKey = `${this.type}-${format}-${JSON.stringify(this.customPresets)}`\n\t\t\n\t\t// Check memoization cache\n\t\tif (this.memoizedPresets.has(cacheKey)) {\n\t\t\tconst cached = this.memoizedPresets.get(cacheKey)!\n\t\t\tthis.presetCategories = cached\n\t\t\tthis.presetRanges = []\n\t\t\tcached.forEach(category => {\n\t\t\t\tthis.presetRanges.push(...category.presets)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Generate preset categories\n\t\tthis.presetCategories = generatePresetCategories(format, this.type === 'datetime-local')\n\n\t\t// Flatten presets for other methods that expect a flat list\n\t\tthis.presetRanges = []\n\t\tthis.presetCategories.forEach(category => {\n\t\t\tthis.presetRanges.push(...category.presets)\n\t\t})\n\n\t\t// Add custom presets if provided\n\t\tif (this.customPresets && this.customPresets.length > 0) {\n\t\t\tconst customCategory: PresetCategory = {\n\t\t\t\tname: 'Custom',\n\t\t\t\tpresets: this.customPresets.map(preset => ({\n\t\t\t\t\tlabel: preset.label,\n\t\t\t\t\trange: {\n\t\t\t\t\t\tdateFrom: preset.dateFrom,\n\t\t\t\t\t\tdateTo: preset.dateTo,\n\t\t\t\t\t},\n\t\t\t\t\tstep: 'day' as const,\n\t\t\t\t})),\n\t\t\t}\n\n\t\t\tthis.presetCategories.push(customCategory)\n\t\t\tthis.presetRanges.push(...customCategory.presets)\n\t\t}\n\t\t\n\t\t// Cache the result\n\t\tthis.memoizedPresets.set(cacheKey, [...this.presetCategories])\n\t}\n\n\tprivate getDateFormat(): string {\n\t\treturn this.format || (this.type === 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DDTHH:mm')\n\t}\n\n\t/**\n\t * Creates a concise display format for the selected date range\n\t */\n\tprivate updateSelectedDateRange() {\n\t\t// Find matching preset\n\t\tconst preset = this.presetRanges.find(\n\t\t\tp => p.range.dateFrom === this.dateFrom.value && p.range.dateTo === this.dateTo.value,\n\t\t)\n\n\t\tif (preset) {\n\t\t\t// If matches a preset, just use the preset name\n\t\t\tthis.selectedDateRange = preset.label\n\t\t\tthis.activePreset = preset.label\n\t\t\treturn\n\t\t}\n\n\t\t// If we didn't find a preset match, check if we should update the active preset\n\t\tthis.checkAndUpdateActivePreset(this.dateFrom.value, this.dateTo.value)\n\n\t\t// Custom date range - create concise format\n\t\tthis.activePreset = null\n\t\tthis.selectedDateRange = formatDateRange(this.dateFrom.value, this.dateTo.value, this.type, this.placeholder)\n\t}\n\n\tprivate setDateRange(dateFrom: string, dateTo: string) {\n\t\tthis.dateFrom.value = dateFrom\n\t\tthis.dateTo.value = dateTo\n\t\tthis.updateSelectedDateRange()\n\n\t\t// Announce change to screen readers\n\t\tthis.announceToScreenReader(`Date range updated: ${this.selectedDateRange}`)\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<{ dateFrom: string; dateTo: string }>('change', {\n\t\t\t\tdetail: { dateFrom, dateTo },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate handlePresetSelection(preset: DateRangePreset, e: Event) {\n\t\te.stopPropagation()\n\t\tthis.activePreset = preset.label\n\t\tthis.setDateRange(preset.range.dateFrom, preset.range.dateTo)\n\t\t$dialog.dismiss()\n\t}\n\n\n\n\tprivate toggleDropdown(e: Event) {\n\t\te.stopPropagation()\n\t\tif (this.disabled) return\n\n\t\tif (this.isOpen) {\n\t\t\tthis.closeDropdown()\n\t\t} else {\n\t\t\tthis.openDropdown()\n\t\t}\n\t}\n\n\tprivate openDropdown() {\n\t\tif (this.disabled) return\n\t\t\n\t\tthis.isOpen = true\n\t\t\n\t\t// Create dialog content\n\t\tconst dialogContent = this.createDialogContent()\n\t\t\n\t\t// Use the dialog service - it will automatically find the nearest schmancy-theme\n\t\t$dialog.component(dialogContent, {\n\t\t\ttitle: 'Select Date Range',\n\t\t\twidth: this.isMobile ? '100vw' : '800px',\n\t\t\thideActions: true\n\t\t}).then(() => {\n\t\t\tthis.isOpen = false\n\t\t})\n\t}\n\n\tprivate closeDropdown() {\n\t\t$dialog.dismiss()\n\t\tthis.isOpen = false\n\t}\n\n\n\t/**\n\t * Shifts the date range based on its type (preset or custom)\n\t */\n\tprivate shiftDateRange(direction: number, e: Event) {\n\t\te.stopPropagation()\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) return\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return\n\n\t\tconst format = this.getDateFormat()\n\t\tconst dir = direction > 0 ? 1 : -1\n\n\t\t// Get active preset and calculate shift parameters\n\t\tconst activePreset = this.presetRanges.find(p => p.label === this.activePreset)\n\t\tconst { unit, amount } = calculateShiftParams(fromDate, toDate, activePreset?.step)\n\n\t\t// Detect date range type\n\t\tconst rangeType = detectDateRangeType(fromDate, toDate)\n\n\t\tlet newFromDate: dayjs.Dayjs\n\t\tlet newToDate: dayjs.Dayjs\n\n\t\t// Handle shifting based on unit\n\t\tif (unit === 'quarter') {\n\t\t\tnewFromDate = adjustQuarter(fromDate, amount, dir)\n\t\t\tnewToDate = adjustQuarter(toDate, amount, dir)\n\t\t\t\n\t\t\tif (rangeType.isFullQuarter) {\n\t\t\t\tnewFromDate = newFromDate.startOf('quarter')\n\t\t\t\tnewToDate = newFromDate.endOf('quarter')\n\t\t\t}\n\t\t} else if (unit === 'hour') {\n\t\t\tconst rangeDurationInHours = toDate.diff(fromDate, 'hour')\n\t\t\tnewFromDate = dir > 0 ? fromDate.add(rangeDurationInHours, 'hour') : fromDate.subtract(rangeDurationInHours, 'hour')\n\t\t\tnewToDate = dir > 0 ? toDate.add(rangeDurationInHours, 'hour') : toDate.subtract(rangeDurationInHours, 'hour')\n\t\t} else {\n\t\t\t// Handle all other units (day, week, month, year)\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, unit as dayjs.ManipulateType)\n\t\t\t\tnewToDate = toDate.add(amount, unit as dayjs.ManipulateType)\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, unit as dayjs.ManipulateType)\n\t\t\t\tnewToDate = toDate.subtract(amount, unit as dayjs.ManipulateType)\n\t\t\t}\n\n\t\t\t// Preserve full period ranges\n\t\t\tif (unit === 'year' && rangeType.isFullYear) {\n\t\t\t\tnewFromDate = newFromDate.startOf('year')\n\t\t\t\tnewToDate = newFromDate.endOf('year')\n\t\t\t} else if (unit === 'month' && rangeType.isFullMonth) {\n\t\t\t\tnewFromDate = newFromDate.startOf('month')\n\t\t\t\tnewToDate = newFromDate.endOf('month')\n\t\t\t} else if (unit === 'week' && rangeType.isFullWeek) {\n\t\t\t\tnewFromDate = newFromDate.startOf('week')\n\t\t\t\tnewToDate = newFromDate.endOf('week')\n\t\t\t}\n\t\t}\n\n\t\t// Update the date range\n\t\tthis.setDateRange(newFromDate.format(format), newToDate.format(format))\n\t\tthis.checkAndUpdateActivePreset(newFromDate.format(format), newToDate.format(format))\n\t}\n\n\t/**\n\t * Handle keyboard navigation for accessibility\n\t */\n\tprivate handleKeyboardNavigation(event: KeyboardEvent) {\n\t\tconst key = event.key\n\t\t\n\t\t// Handle date navigation keys\n\t\tif (this.dateFrom.value && this.dateTo.value && !this.disabled) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'PageUp':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(-1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'PageDown':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'Home':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+Home: Jump to start of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst monthStart = currentFrom.startOf('month')\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthStart.format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthStart.add(daysDiff, 'day').format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'End':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+End: Jump to end of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\tconst monthEnd = currentTo.endOf('month')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthEnd.subtract(daysDiff, 'day').format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthEnd.format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date range matches any predefined preset,\n\t * and updates the activePreset accordingly\n\t */\n\tprivate checkAndUpdateActivePreset(fromDate: string, toDate: string) {\n\t\t// Find a preset that matches the current date range\n\t\tconst matchingPreset = this.presetRanges.find(\n\t\t\tpreset => preset.range.dateFrom === fromDate && preset.range.dateTo === toDate,\n\t\t)\n\n\t\tif (matchingPreset) {\n\t\t\tthis.activePreset = matchingPreset.label\n\t\t} else {\n\t\t\tthis.activePreset = null\n\t\t}\n\t}\n\n\tprivate applyManualDateSelection(e: Event) {\n\t\te.stopPropagation()\n\t\t// Validate dates before applying\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.announceToScreenReader('Invalid date format. Please check your input.')\n\t\t\treturn\n\t\t}\n\n\t\t// Ensure from date is before to date\n\t\tif (fromDate.isAfter(toDate)) {\n\t\t\tthis.setDateRange(toDate.format(this.getDateFormat()), fromDate.format(this.getDateFormat()))\n\t\t} else {\n\t\t\tthis.setDateRange(this.dateFrom.value, this.dateTo.value)\n\t\t}\n\n\t\t$dialog.dismiss()\n\t}\n\n\t/**\n\t * Check if view is mobile\n\t */\n\tprivate checkMobileView() {\n\t\tthis.isMobile = window.innerWidth < 768\n\t}\n\n\n\n\tprivate handleFromDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateFrom.value = input.value\n\t\tthis.updateSelectedDateRange()\n\t}\n\n\tprivate handleToDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateTo.value = input.value\n\t\tthis.updateSelectedDateRange()\n\t}\n\n\t/**\n\t * Create dialog content\n\t */\n\tprivate createDialogContent(): TemplateResult {\n\t\treturn html`\n\t\t\t<div class=\"w-full min-h-[400px] max-h-[80vh] flex flex-col p-4\">\n\t\t\t\t<!-- Custom Range Section with Inline Calendars -->\n\t\t\t\t<schmancy-surface type=\"container\" class=\"rounded-xl p-4 mb-6\">\n\t\t\t\t\t<div class=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n\t\t\t\t\t\t\t<!-- From Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateFrom.label || 'From'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${this.dateFrom.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.minDate)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\t@change=\"${this.handleFromDateChange.bind(this)}\"\n\t\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- To Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateTo.label || 'To'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${this.dateTo.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.dateFrom.value)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\t@change=\"${this.handleToDateChange.bind(this)}\"\n\t\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<!-- Apply Button - Now at the bottom for logical flow -->\n\t\t\t\t\t\t<div class=\"flex justify-end mt-2\">\n\t\t\t\t\t\t\t<schmancy-button \n\t\t\t\t\t\t\t\tvariant=\"filled\" \n\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.applyManualDateSelection(e)}\"\n\t\t\t\t\t\t\t\t?disabled=\"${!this.dateFrom.value || !this.dateTo.value}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tApply\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</schmancy-surface>\n\n\t\t\t\t<!-- Presets Section -->\n\t\t\t\t<div class=\"flex-1 overflow-y-auto overflow-x-hidden min-h-0\">\n\t\t\t\t\t<div class=\"grid grid-cols-2 md:grid-cols-5 gap-6\">\n\t\t\t\t\t\t${this.presetCategories.map(\n\t\t\t\t\t\t\tcategory => html`\n\t\t\t\t\t\t\t\t<div class=\"space-y-3\">\n\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\" class=\"text-surface-onVariant font-medium\">\n\t\t\t\t\t\t\t\t\t\t${category.name}\n\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t<div class=\"space-y-1\">\n\t\t\t\t\t\t\t\t\t\t${category.presets.map(\n\t\t\t\t\t\t\t\t\t\t\tpreset => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"${this.activePreset === preset.label ? 'filled' : 'text'}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full justify-start text-left\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.handlePresetSelection(preset, e)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-pressed=\"${this.activePreset === preset.label}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"${preset.label}: ${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"truncate\">${preset.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n\n\t/**\n\t * Announce messages to screen readers\n\t */\n\tprivate announceToScreenReader(message: string) {\n\t\tthis.announceMessage = message\n\t\t// Clear the message after announcement\n\t\ttimer(100)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.announceMessage = ''\n\t\t\t})\n\t}\n\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 pointer-events-none' : ''}\">\n\t\t\t\t<!-- Screen reader announcements -->\n\t\t\t\t<div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t\t${this.announceMessage}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Trigger using the preferred schmancy-grid pattern -->\n\t\t\t\t<section @click=${(event: Event) => event.stopPropagation()} class=\"flex\" >\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Previous ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(-1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_left\n\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.toggleDropdown(e)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t</schmancy-button>\n\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Next ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_right\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t`\n\t}\n}"],"names":["t","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","quarter","bind","enforceDateFormat","dateString","expectedFormat","parsedDate","dayjs","validateInitialDateRange","dateFrom","dateTo","formattedDateFrom","formattedDateTo","generateLastNDaysPresets","days","map","label","range","step","generateLastNWeeksPresets","weeks","generateLastNMonthsPresets","generateLastNQuartersPresets","quarters","adjustQuarter","amount","direction","newQuarter","yearAdjustment","newDate","targetDay","quarterOfYear","SchmancyDateRange","$LitElement","super","type","value","customPresets","disabled","required","placeholder","clearable","isOpen","selectedDateRange","activePreset","announceMessage","isMobile","presetRanges","presetCategories","memoizedPresets","Map","connectedCallback","initPresetRanges","checkMobileView","dateFormat","getDateFormat","validatedRange","updateSelectedDateRange","now","setupEventHandlers","fromEvent","document","pipe","takeUntil","disconnecting","subscribe","event","handleKeyboardNavigation","window","debounceTime","disconnectedCallback","changedProps","updated","has","cacheKey","JSON","stringify","cached","category","push","presets","includeTime","categories","customCategory","preset","find","checkAndUpdateActivePreset","fromValue","toValue","fromDate","fromTime","toTime","announceToScreenReader","dispatchEvent","CustomEvent","detail","bubbles","composed","stopPropagation","setDateRange","$dialog","dismiss","closeDropdown","openDropdown","dialogContent","createDialogContent","component","title","width","hideActions","then","dir","unit","activePresetStep","rangeDurationInDays","rangeType","isFullMonth","isFullQuarter","isFullYear","isFullWeek","day","newFromDate","newToDate","rangeDurationInHours","key","target","contains","shiftDateRange","preventDefault","ctrlKey","currentFrom","currentTo","monthStart","daysDiff","monthEnd","matchingPreset","innerWidth","input","html","ifDefined","minDate","maxDate","handleFromDateChange","handleToDateChange","applyManualDateSelection","handlePresetSelection","message","timer","render","toggleDropdown","__decorateClass","property","Object","Boolean","state","customElement"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"date-range-Ch_Ir3s1.cjs","sources":["../../../../.yarn/berry/cache/dayjs-npm-1.11.13-d478bb9479-10c0.zip/node_modules/dayjs/dayjs.min.js","../../../../.yarn/berry/cache/dayjs-npm-1.11.13-d478bb9479-10c0.zip/node_modules/dayjs/plugin/quarterOfYear.js","../src/date-range/date-utils.ts","../src/date-range/date-range-presets.ts","../src/date-range/date-range-helpers.ts","../src/date-range/date-range.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","import dayjs from 'dayjs'\n\ntype DateFormat = 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\n/**\n * Ensures that a date string conforms to a specific format.\n * If the date is already in the correct format, it returns the original string.\n * If the date is in a different format, it attempts to convert it to the specified format.\n * If the date is invalid or cannot be converted, it returns null.\n *\n * @param dateString The date string to validate and format.\n * @param expectedFormat The expected date format (e.g., 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm').\n * @returns The formatted date string, or null if the date is invalid.\n */\nfunction enforceDateFormat(dateString: string | undefined, expectedFormat: DateFormat): string | null {\n\tif (!dateString) {\n\t\treturn null // Or handle the undefined case differently if needed\n\t}\n\n\tconst parsedDate = dayjs(dateString)\n\n\tif (!parsedDate.isValid()) {\n\t\treturn null // Date is invalid\n\t}\n\n\treturn parsedDate.format(expectedFormat)\n}\n\n/**\n * Validates if the initial date range values are in the expected format.\n *\n * @param dateFrom The dateFrom value to validate.\n * @param dateTo The dateTo value to validate.\n * @param expectedFormat The expected date format.\n * @returns An object indicating whether each date is valid, and the formatted date or null if invalid.\n */\nfunction validateInitialDateRange(\n\tdateFrom: string | undefined,\n\tdateTo: string | undefined,\n\texpectedFormat: DateFormat,\n): {\n\tdateFrom: string | null\n\tdateTo: string | null\n\tisValid: boolean\n} {\n\tconst formattedDateFrom = enforceDateFormat(dateFrom, expectedFormat)\n\tconst formattedDateTo = enforceDateFormat(dateTo, expectedFormat)\n\n\tconst isValid = formattedDateFrom !== null && formattedDateTo !== null\n\n\treturn {\n\t\tdateFrom: formattedDateFrom,\n\t\tdateTo: formattedDateTo,\n\t\tisValid,\n\t}\n}\n\nexport { validateInitialDateRange }\n","import dayjs from 'dayjs'\r\n\r\nexport type PresetUnit = dayjs.OpUnitType | 'quarter'\r\n\r\nexport interface DateRangePreset {\r\n\tlabel: string\r\n\trange: { dateFrom: string; dateTo: string }\r\n\tstep: PresetUnit\r\n}\r\n\r\nexport interface PresetCategory {\r\n\tname: string\r\n\tpresets: DateRangePreset[]\r\n}\r\n\r\n/**\r\n * Generate date range presets for different time periods\r\n */\r\nexport function generatePresetCategories(format: string, includeTime: boolean = false): PresetCategory[] {\r\n\tconst categories: PresetCategory[] = []\r\n\r\n\t// Hours category (only for datetime-local)\r\n\tif (includeTime) {\r\n\t\tcategories.push({\r\n\t\t\tname: 'Hours',\r\n\t\t\tpresets: [\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 24 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(24, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 12 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(12, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t})\r\n\t}\r\n\r\n\t// Days category\r\n\tcategories.push({\r\n\t\tname: 'Days',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Today',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Yesterday',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'days').startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'days').endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t...generateLastNDaysPresets([7, 14, 30, 60, 90], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Weeks category\r\n\tcategories.push({\r\n\t\tname: 'Weeks',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'weeks').startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'weeks').endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t...generateLastNWeeksPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Months category\r\n\tcategories.push({\r\n\t\tname: 'Months',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'month').startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'month').endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t...generateLastNMonthsPresets([3, 6], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Quarters category\r\n\tcategories.push({\r\n\t\tname: 'Quarters',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'quarter').startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'quarter').endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t...generateLastNQuartersPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Years category\r\n\tcategories.push({\r\n\t\tname: 'Years',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'year').startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'year').endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Year to Date',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t],\r\n\t})\r\n\r\n\treturn categories\r\n}\r\n\r\n// Helper functions to generate preset arrays\r\nfunction generateLastNDaysPresets(days: number[], format: string): DateRangePreset[] {\r\n\treturn days.map(n => ({\r\n\t\tlabel: `Last ${n} Days`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n - 1, 'days').startOf('day').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'day' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNWeeksPresets(weeks: number[], format: string): DateRangePreset[] {\r\n\treturn weeks.map(n => ({\r\n\t\tlabel: `Last ${n} Weeks`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'weeks').startOf('week').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'week' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNMonthsPresets(months: number[], format: string): DateRangePreset[] {\r\n\treturn months.map(n => ({\r\n\t\tlabel: `Last ${n} Months`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'months').startOf('month').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'month' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNQuartersPresets(quarters: number[], format: string): DateRangePreset[] {\r\n\treturn quarters.map(n => ({\r\n\t\tlabel: `Last ${n} Quarters`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'quarters').startOf('quarter').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'quarter' as PresetUnit,\r\n\t}))\r\n}","import dayjs from 'dayjs'\r\nimport { PresetUnit } from './date-range-presets'\r\n\r\n/**\r\n * Format a date range into a human-readable string\r\n */\r\nexport function formatDateRange(\r\n\tfromValue: string,\r\n\ttoValue: string,\r\n\ttype: 'date' | 'datetime-local',\r\n\tplaceholder: string\r\n): string {\r\n\tif (!fromValue || !toValue) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\tconst fromDate = dayjs(fromValue)\r\n\tconst toDate = dayjs(toValue)\r\n\r\n\tif (!fromDate.isValid() || !toDate.isValid()) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\t// Format times if needed (for datetime-local)\r\n\tconst fromTime = type === 'datetime-local' ? fromDate.format(' h:mm A') : ''\r\n\tconst toTime = type === 'datetime-local' ? toDate.format(' h:mm A') : ''\r\n\r\n\t// Check if same day\r\n\tif (fromDate.isSame(toDate, 'day')) {\r\n\t\treturn `${fromDate.format('MMM D, YYYY')}${fromTime}`\r\n\t}\r\n\r\n\t// Check if same month and year\r\n\tif (fromDate.isSame(toDate, 'month') && fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('MMM D')}-${toDate.format('D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Check if same year\r\n\tif (fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('MMM D')} - ${toDate.format('MMM D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Different years\r\n\treturn `${fromDate.format('MMM D, YYYY')}${fromTime} - ${toDate.format('MMM D, YYYY')}${toTime}`\r\n}\r\n\r\n/**\r\n * Detect the type of date range (full month, full quarter, etc.)\r\n */\r\nexport interface DateRangeType {\r\n\tisFullMonth: boolean\r\n\tisFullQuarter: boolean\r\n\tisFullYear: boolean\r\n\tisFullWeek: boolean\r\n}\r\n\r\nexport function detectDateRangeType(fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): DateRangeType {\r\n\treturn {\r\n\t\tisFullMonth: fromDate.date() === 1 && toDate.isSame(fromDate.endOf('month'), 'day'),\r\n\t\tisFullQuarter: fromDate.isSame(fromDate.startOf('quarter'), 'day') && toDate.isSame(toDate.endOf('quarter'), 'day'),\r\n\t\tisFullYear: fromDate.isSame(fromDate.startOf('year'), 'day') && toDate.isSame(toDate.endOf('year'), 'day'),\r\n\t\tisFullWeek: fromDate.day() === 0 && toDate.day() === 6 && toDate.diff(fromDate, 'days') === 6,\r\n\t}\r\n}\r\n\r\n/**\r\n * Calculate the appropriate shift unit and amount for a date range\r\n */\r\nexport function calculateShiftParams(\r\n\tfromDate: dayjs.Dayjs,\r\n\ttoDate: dayjs.Dayjs,\r\n\tactivePresetStep?: PresetUnit\r\n): { unit: PresetUnit; amount: number } {\r\n\tif (activePresetStep) {\r\n\t\treturn { unit: activePresetStep, amount: 1 }\r\n\t}\r\n\r\n\tconst rangeDurationInDays = toDate.diff(fromDate, 'day')\r\n\r\n\t// For very long ranges, use years\r\n\tif (rangeDurationInDays >= 360) {\r\n\t\treturn { unit: 'year', amount: Math.round(rangeDurationInDays / 365) }\r\n\t}\r\n\t// For long ranges, use quarters\r\n\telse if (rangeDurationInDays >= 90) {\r\n\t\treturn { unit: 'quarter', amount: Math.round(rangeDurationInDays / 90) }\r\n\t}\r\n\t// For medium-long ranges, use months\r\n\telse if (rangeDurationInDays >= 30) {\r\n\t\treturn { unit: 'month', amount: Math.round(rangeDurationInDays / 30) }\r\n\t}\r\n\t// For medium ranges, use weeks\r\n\telse if (rangeDurationInDays >= 7) {\r\n\t\treturn { unit: 'week', amount: Math.round(rangeDurationInDays / 7) }\r\n\t}\r\n\t// For shorter ranges, use days\r\n\telse {\r\n\t\treturn { unit: 'day', amount: rangeDurationInDays + 1 }\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper method to safely add/subtract quarter values\r\n */\r\nexport function adjustQuarter(date: dayjs.Dayjs, amount: number, direction: 1 | -1): dayjs.Dayjs {\r\n\t// Get current quarter (1-4)\r\n\tconst currentQuarter = date.quarter()\r\n\r\n\t// Calculate new quarter\r\n\tlet newQuarter = currentQuarter + direction * amount\r\n\tlet yearAdjustment = 0\r\n\r\n\t// Handle year boundaries\r\n\twhile (newQuarter > 4) {\r\n\t\tnewQuarter -= 4\r\n\t\tyearAdjustment += 1\r\n\t}\r\n\r\n\twhile (newQuarter < 1) {\r\n\t\tnewQuarter += 4\r\n\t\tyearAdjustment -= 1\r\n\t}\r\n\r\n\t// Adjust year if needed\r\n\tconst adjustedDate = date.add(yearAdjustment, 'year')\r\n\r\n\t// Set to the start of the new quarter\r\n\tconst newDate = adjustedDate.month((newQuarter - 1) * 3)\r\n\r\n\t// Maintain the same day of month if possible\r\n\tconst daysInMonth = newDate.daysInMonth()\r\n\tconst targetDay = Math.min(date.date(), daysInMonth)\r\n\r\n\treturn newDate.date(targetDay)\r\n}","import { $LitElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { html, PropertyValues, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { debounceTime, fromEvent, takeUntil, timer } from 'rxjs'\nimport { $dialog } from '../dialog/dialog-service'\nimport { validateInitialDateRange } from './date-utils'\nimport { DateRangePreset, PresetCategory, generatePresetCategories } from './date-range-presets'\nimport { formatDateRange, detectDateRangeType, calculateShiftParams, adjustQuarter } from './date-range-helpers'\n\n// Add quarter plugin to dayjs\ndayjs.extend(quarterOfYear)\n\nexport type SchmancyDateRangeChangeEvent = CustomEvent<{\n\tdateFrom: string\n\tdateTo: string\n}>\n\n/**\n * A date range selector that supports presets and manual date input.\n *\n * @element schmancy-date-range\n * @fires change - Fired when the date range changes with dateFrom and dateTo values\n */\n@customElement('schmancy-date-range')\nexport class SchmancyDateRange extends $LitElement() {\n\t// Core properties\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\n\t// Enhanced functionality\n\t@property({ type: Array }) customPresets: Array<{\n\t\tlabel: string\n\t\tdateFrom: string\n\t\tdateTo: string\n\t}> = []\n\t@property({ type: String }) format?: string\n\t@property({ type: Boolean }) disabled = false\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = 'Select date range'\n\t@property({ type: Boolean }) clearable = true\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private selectedDateRange: string = ''\n\t@state() private activePreset: string | null = null\n\t@state() private announceMessage: string = ''\n\t@state() private isMobile = false\n\n\t// Default presets\n\tprivate presetRanges: DateRangePreset[] = []\n\n\t// Categorized presets\n\tprivate presetCategories: PresetCategory[] = []\n\n\t// Memoization cache\n\tprivate memoizedPresets = new Map<string, PresetCategory[]>()\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.initPresetRanges()\n\t\tthis.checkMobileView()\n\n\t\t// Validate initial date range\n\t\tconst dateFormat = this.getDateFormat() as 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\t\tconst validatedRange = validateInitialDateRange(this.dateFrom.value, this.dateTo.value, dateFormat)\n\n\t\tif (validatedRange.isValid) {\n\t\t\tthis.dateFrom.value = validatedRange.dateFrom!\n\t\t\tthis.dateTo.value = validatedRange.dateTo!\n\t\t\tthis.updateSelectedDateRange()\n\t\t} else {\n\t\t\tconst now = dayjs().format(dateFormat)\n\t\t\tthis.dateFrom.value = now\n\t\t\tthis.dateTo.value = now\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\n\t\t// Set up global event handlers using RxJS\n\t\tthis.setupEventHandlers()\n\t}\n\n\tprivate setupEventHandlers() {\n\t\t// Handle keyboard navigation\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.handleKeyboardNavigation(event)\n\t\t\t})\n\n\t\t// Handle window resize with debouncing\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(150),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.checkMobileView()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (\n\t\t\t(changedProps.has('dateFrom') || changedProps.has('dateTo')) &&\n\t\t\t(this.dateFrom?.value !== undefined || this.dateTo?.value !== undefined)\n\t\t) {\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\t}\n\n\tprivate initPresetRanges() {\n\t\tconst format = this.getDateFormat()\n\t\tconst cacheKey = `${this.type}-${format}-${JSON.stringify(this.customPresets)}`\n\t\t\n\t\t// Check memoization cache\n\t\tif (this.memoizedPresets.has(cacheKey)) {\n\t\t\tconst cached = this.memoizedPresets.get(cacheKey)!\n\t\t\tthis.presetCategories = cached\n\t\t\tthis.presetRanges = []\n\t\t\tcached.forEach(category => {\n\t\t\t\tthis.presetRanges.push(...category.presets)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Generate preset categories\n\t\tthis.presetCategories = generatePresetCategories(format, this.type === 'datetime-local')\n\n\t\t// Flatten presets for other methods that expect a flat list\n\t\tthis.presetRanges = []\n\t\tthis.presetCategories.forEach(category => {\n\t\t\tthis.presetRanges.push(...category.presets)\n\t\t})\n\n\t\t// Add custom presets if provided\n\t\tif (this.customPresets && this.customPresets.length > 0) {\n\t\t\tconst customCategory: PresetCategory = {\n\t\t\t\tname: 'Custom',\n\t\t\t\tpresets: this.customPresets.map(preset => ({\n\t\t\t\t\tlabel: preset.label,\n\t\t\t\t\trange: {\n\t\t\t\t\t\tdateFrom: preset.dateFrom,\n\t\t\t\t\t\tdateTo: preset.dateTo,\n\t\t\t\t\t},\n\t\t\t\t\tstep: 'day' as const,\n\t\t\t\t})),\n\t\t\t}\n\n\t\t\tthis.presetCategories.push(customCategory)\n\t\t\tthis.presetRanges.push(...customCategory.presets)\n\t\t}\n\t\t\n\t\t// Cache the result\n\t\tthis.memoizedPresets.set(cacheKey, [...this.presetCategories])\n\t}\n\n\tprivate getDateFormat(): string {\n\t\treturn this.format || (this.type === 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DDTHH:mm')\n\t}\n\n\t/**\n\t * Creates a concise display format for the selected date range\n\t */\n\tprivate updateSelectedDateRange() {\n\t\t// Find matching preset\n\t\tconst preset = this.presetRanges.find(\n\t\t\tp => p.range.dateFrom === this.dateFrom.value && p.range.dateTo === this.dateTo.value,\n\t\t)\n\n\t\tif (preset) {\n\t\t\t// If matches a preset, just use the preset name\n\t\t\tthis.selectedDateRange = preset.label\n\t\t\tthis.activePreset = preset.label\n\t\t\treturn\n\t\t}\n\n\t\t// If we didn't find a preset match, check if we should update the active preset\n\t\tthis.checkAndUpdateActivePreset(this.dateFrom.value, this.dateTo.value)\n\n\t\t// Custom date range - create concise format\n\t\tthis.activePreset = null\n\t\tthis.selectedDateRange = formatDateRange(this.dateFrom.value, this.dateTo.value, this.type, this.placeholder)\n\t}\n\n\tprivate setDateRange(dateFrom: string, dateTo: string) {\n\t\tthis.dateFrom.value = dateFrom\n\t\tthis.dateTo.value = dateTo\n\t\tthis.updateSelectedDateRange()\n\n\t\t// Announce change to screen readers\n\t\tthis.announceToScreenReader(`Date range updated: ${this.selectedDateRange}`)\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<{ dateFrom: string; dateTo: string }>('change', {\n\t\t\t\tdetail: { dateFrom, dateTo },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate handlePresetSelection(preset: DateRangePreset, e: Event) {\n\t\te.stopPropagation()\n\t\tthis.activePreset = preset.label\n\t\tthis.setDateRange(preset.range.dateFrom, preset.range.dateTo)\n\t\t$dialog.dismiss()\n\t}\n\n\n\n\tprivate toggleDropdown(e: Event) {\n\t\te.stopPropagation()\n\t\tif (this.disabled) return\n\n\t\tif (this.isOpen) {\n\t\t\tthis.closeDropdown()\n\t\t} else {\n\t\t\tthis.openDropdown()\n\t\t}\n\t}\n\n\tprivate openDropdown() {\n\t\tif (this.disabled) return\n\t\t\n\t\tthis.isOpen = true\n\t\t\n\t\t// Create dialog content\n\t\tconst dialogContent = this.createDialogContent()\n\t\t\n\t\t// Use the dialog service - it will automatically find the nearest schmancy-theme\n\t\t$dialog.component(dialogContent, {\n\t\t\ttitle: 'Select Date Range',\n\t\t\twidth: this.isMobile ? '100vw' : '800px',\n\t\t\thideActions: true\n\t\t}).then(() => {\n\t\t\tthis.isOpen = false\n\t\t})\n\t}\n\n\tprivate closeDropdown() {\n\t\t$dialog.dismiss()\n\t\tthis.isOpen = false\n\t}\n\n\n\t/**\n\t * Shifts the date range based on its type (preset or custom)\n\t */\n\tprivate shiftDateRange(direction: number, e: Event) {\n\t\te.stopPropagation()\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) return\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return\n\n\t\tconst format = this.getDateFormat()\n\t\tconst dir = direction > 0 ? 1 : -1\n\n\t\t// Get active preset and calculate shift parameters\n\t\tconst activePreset = this.presetRanges.find(p => p.label === this.activePreset)\n\t\tconst { unit, amount } = calculateShiftParams(fromDate, toDate, activePreset?.step)\n\n\t\t// Detect date range type\n\t\tconst rangeType = detectDateRangeType(fromDate, toDate)\n\n\t\tlet newFromDate: dayjs.Dayjs\n\t\tlet newToDate: dayjs.Dayjs\n\n\t\t// Handle shifting based on unit\n\t\tif (unit === 'quarter') {\n\t\t\tnewFromDate = adjustQuarter(fromDate, amount, dir)\n\t\t\tnewToDate = adjustQuarter(toDate, amount, dir)\n\t\t\t\n\t\t\tif (rangeType.isFullQuarter) {\n\t\t\t\tnewFromDate = newFromDate.startOf('quarter')\n\t\t\t\tnewToDate = newFromDate.endOf('quarter')\n\t\t\t}\n\t\t} else if (unit === 'hour') {\n\t\t\tconst rangeDurationInHours = toDate.diff(fromDate, 'hour')\n\t\t\tnewFromDate = dir > 0 ? fromDate.add(rangeDurationInHours, 'hour') : fromDate.subtract(rangeDurationInHours, 'hour')\n\t\t\tnewToDate = dir > 0 ? toDate.add(rangeDurationInHours, 'hour') : toDate.subtract(rangeDurationInHours, 'hour')\n\t\t} else {\n\t\t\t// Handle all other units (day, week, month, year)\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, unit as dayjs.ManipulateType)\n\t\t\t\tnewToDate = toDate.add(amount, unit as dayjs.ManipulateType)\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, unit as dayjs.ManipulateType)\n\t\t\t\tnewToDate = toDate.subtract(amount, unit as dayjs.ManipulateType)\n\t\t\t}\n\n\t\t\t// Preserve full period ranges\n\t\t\tif (unit === 'year' && rangeType.isFullYear) {\n\t\t\t\tnewFromDate = newFromDate.startOf('year')\n\t\t\t\tnewToDate = newFromDate.endOf('year')\n\t\t\t} else if (unit === 'month' && rangeType.isFullMonth) {\n\t\t\t\tnewFromDate = newFromDate.startOf('month')\n\t\t\t\tnewToDate = newFromDate.endOf('month')\n\t\t\t} else if (unit === 'week' && rangeType.isFullWeek) {\n\t\t\t\tnewFromDate = newFromDate.startOf('week')\n\t\t\t\tnewToDate = newFromDate.endOf('week')\n\t\t\t}\n\t\t}\n\n\t\t// Update the date range\n\t\tthis.setDateRange(newFromDate.format(format), newToDate.format(format))\n\t\tthis.checkAndUpdateActivePreset(newFromDate.format(format), newToDate.format(format))\n\t}\n\n\t/**\n\t * Handle keyboard navigation for accessibility\n\t */\n\tprivate handleKeyboardNavigation(event: KeyboardEvent) {\n\t\tconst key = event.key\n\t\t\n\t\t// Handle date navigation keys\n\t\tif (this.dateFrom.value && this.dateTo.value && !this.disabled) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'PageUp':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(-1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'PageDown':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'Home':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+Home: Jump to start of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst monthStart = currentFrom.startOf('month')\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthStart.format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthStart.add(daysDiff, 'day').format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'End':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+End: Jump to end of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\tconst monthEnd = currentTo.endOf('month')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthEnd.subtract(daysDiff, 'day').format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthEnd.format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date range matches any predefined preset,\n\t * and updates the activePreset accordingly\n\t */\n\tprivate checkAndUpdateActivePreset(fromDate: string, toDate: string) {\n\t\t// Find a preset that matches the current date range\n\t\tconst matchingPreset = this.presetRanges.find(\n\t\t\tpreset => preset.range.dateFrom === fromDate && preset.range.dateTo === toDate,\n\t\t)\n\n\t\tif (matchingPreset) {\n\t\t\tthis.activePreset = matchingPreset.label\n\t\t} else {\n\t\t\tthis.activePreset = null\n\t\t}\n\t}\n\n\tprivate applyManualDateSelection(e: Event) {\n\t\te.stopPropagation()\n\t\t// Validate dates before applying\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.announceToScreenReader('Invalid date format. Please check your input.')\n\t\t\treturn\n\t\t}\n\n\t\t// Ensure from date is before to date\n\t\tif (fromDate.isAfter(toDate)) {\n\t\t\tthis.setDateRange(toDate.format(this.getDateFormat()), fromDate.format(this.getDateFormat()))\n\t\t} else {\n\t\t\tthis.setDateRange(this.dateFrom.value, this.dateTo.value)\n\t\t}\n\n\t\t$dialog.dismiss()\n\t}\n\n\t/**\n\t * Check if view is mobile\n\t */\n\tprivate checkMobileView() {\n\t\tthis.isMobile = window.innerWidth < 768\n\t}\n\n\n\n\tprivate handleFromDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateFrom.value = input.value\n\t\tthis.updateSelectedDateRange()\n\t}\n\n\tprivate handleToDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateTo.value = input.value\n\t\tthis.updateSelectedDateRange()\n\t}\n\n\t/**\n\t * Create dialog content\n\t */\n\tprivate createDialogContent(): TemplateResult {\n\t\treturn html`\n\t\t\t<div class=\"w-full min-h-[400px] max-h-[80vh] flex flex-col p-4\">\n\t\t\t\t<!-- Custom Range Section with Inline Calendars -->\n\t\t\t\t<schmancy-surface type=\"container\" class=\"rounded-xl p-4 mb-6\">\n\t\t\t\t\t<div class=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n\t\t\t\t\t\t\t<!-- From Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateFrom.label || 'From'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${this.dateFrom.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.minDate)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\t@change=\"${this.handleFromDateChange.bind(this)}\"\n\t\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- To Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateTo.label || 'To'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${this.dateTo.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.dateFrom.value)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\t@change=\"${this.handleToDateChange.bind(this)}\"\n\t\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<!-- Apply Button - Now at the bottom for logical flow -->\n\t\t\t\t\t\t<div class=\"flex justify-end mt-2\">\n\t\t\t\t\t\t\t<schmancy-button \n\t\t\t\t\t\t\t\tvariant=\"filled\" \n\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.applyManualDateSelection(e)}\"\n\t\t\t\t\t\t\t\t?disabled=\"${!this.dateFrom.value || !this.dateTo.value}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tApply\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</schmancy-surface>\n\n\t\t\t\t<!-- Presets Section -->\n\t\t\t\t<div class=\"flex-1 overflow-y-auto overflow-x-hidden min-h-0\">\n\t\t\t\t\t<div class=\"grid grid-cols-2 md:grid-cols-5 gap-6\">\n\t\t\t\t\t\t${this.presetCategories.map(\n\t\t\t\t\t\t\tcategory => html`\n\t\t\t\t\t\t\t\t<div class=\"space-y-3\">\n\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\" class=\"text-surface-onVariant font-medium\">\n\t\t\t\t\t\t\t\t\t\t${category.name}\n\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t<div class=\"space-y-1\">\n\t\t\t\t\t\t\t\t\t\t${category.presets.map(\n\t\t\t\t\t\t\t\t\t\t\tpreset => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"${this.activePreset === preset.label ? 'filled' : 'text'}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full justify-start text-left\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.handlePresetSelection(preset, e)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-pressed=\"${this.activePreset === preset.label}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"${preset.label}: ${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"truncate\">${preset.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n\n\t/**\n\t * Announce messages to screen readers\n\t */\n\tprivate announceToScreenReader(message: string) {\n\t\tthis.announceMessage = message\n\t\t// Clear the message after announcement\n\t\ttimer(100)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.announceMessage = ''\n\t\t\t})\n\t}\n\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 pointer-events-none' : ''}\">\n\t\t\t\t<!-- Screen reader announcements -->\n\t\t\t\t<div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t\t${this.announceMessage}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Trigger using the preferred schmancy-grid pattern -->\n\t\t\t\t<section @click=${(event: Event) => event.stopPropagation()} class=\"flex\" >\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Previous ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(-1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_left\n\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.toggleDropdown(e)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t</schmancy-button>\n\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Next ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_right\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t`\n\t}\n}"],"names":["t","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","quarter","bind","enforceDateFormat","dateString","expectedFormat","parsedDate","dayjs","validateInitialDateRange","dateFrom","dateTo","formattedDateFrom","formattedDateTo","generateLastNDaysPresets","days","map","label","range","step","generateLastNWeeksPresets","weeks","generateLastNMonthsPresets","generateLastNQuartersPresets","quarters","adjustQuarter","amount","direction","newQuarter","yearAdjustment","newDate","targetDay","quarterOfYear","SchmancyDateRange","$LitElement","super","type","value","customPresets","disabled","required","placeholder","clearable","isOpen","selectedDateRange","activePreset","announceMessage","isMobile","presetRanges","presetCategories","memoizedPresets","Map","connectedCallback","initPresetRanges","checkMobileView","dateFormat","getDateFormat","validatedRange","updateSelectedDateRange","now","setupEventHandlers","fromEvent","document","pipe","takeUntil","disconnecting","subscribe","event","handleKeyboardNavigation","window","debounceTime","disconnectedCallback","changedProps","updated","has","cacheKey","JSON","stringify","cached","category","push","presets","includeTime","categories","customCategory","preset","find","checkAndUpdateActivePreset","fromValue","toValue","fromDate","fromTime","toTime","announceToScreenReader","dispatchEvent","CustomEvent","detail","bubbles","composed","stopPropagation","setDateRange","$dialog","dismiss","closeDropdown","openDropdown","dialogContent","createDialogContent","component","title","width","hideActions","then","dir","unit","activePresetStep","rangeDurationInDays","rangeType","isFullMonth","isFullQuarter","isFullYear","isFullWeek","day","newFromDate","newToDate","rangeDurationInHours","key","target","contains","shiftDateRange","preventDefault","ctrlKey","currentFrom","currentTo","monthStart","daysDiff","monthEnd","matchingPreset","innerWidth","input","html","ifDefined","minDate","maxDate","handleFromDateChange","handleToDateChange","applyManualDateSelection","handlePresetSelection","message","timer","render","toggleDropdown","__decorateClass","property","Object","Boolean","state","customElement"],"mappings":"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","x_google_ignoreList":[0,1]}
|
package/dist/date-range.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./date-range-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./date-range-Ch_Ir3s1.cjs");Object.defineProperty(exports,"SchmancyDateRange",{enumerable:!0,get:()=>e.SchmancyDateRange}),exports.validateInitialDateRange=e.validateInitialDateRange;
|
|
2
2
|
//# sourceMappingURL=date-range.cjs.map
|
package/dist/date-range.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const d=require("lit"),o=require("rxjs"),
|
|
2
|
-
//# sourceMappingURL=dialog-service-
|
|
1
|
+
"use strict";const d=require("lit"),o=require("rxjs"),p=require("./dialog-events--DuMbZ8T.cjs"),l=class l{constructor(){this.activeDialogs=[],this.activeRawDialogs=[],this.dialogSubject=new o.Subject,this.dismissSubject=new o.Subject,this.setupDialogOpeningLogic(),this.setupDialogDismissLogic()}static getInstance(){return l.instance||(l.instance=new l),l.instance}setupDialogOpeningLogic(){this.dialogSubject.pipe(o.switchMap(e=>o.forkJoin([o.fromEvent(window,p.DialogHereMorty).pipe(o.takeUntil(o.timer(100)),o.map(i=>i.detail),o.defaultIfEmpty(void 0)),o.of(e).pipe(o.tap(()=>{const i=e.type==="confirm"?`confirm-dialog-${Date.now()}-${Math.random().toString(36).substring(2,9)}`:`dialog-${Date.now()}-${Math.random().toString(36).substring(2,9)}`;window.dispatchEvent(new CustomEvent(p.DialogWhereAreYouRicky,{detail:{uid:i},bubbles:!0,composed:!0})),e.uid=i}))])),o.map(([e,i])=>{let n,t;return e?.dialog?(n=e.dialog,t=n.parentElement):(t=e?.theme?e.theme:i.options.targetContainer||document.querySelector("schmancy-theme")||document.body,n=i.type==="confirm"?document.createElement("confirm-dialog"):document.createElement("schmancy-dialog"),n.setAttribute("uid",i.uid),t.appendChild(n)),{dialog:n,target:i,targetContainer:t}}),o.tap(({dialog:e,target:i})=>{if(i.type==="confirm"){const n=e,t=i.options;if(t.title&&(n.title=t.title),t.subtitle&&(n.subtitle=t.subtitle),t.message&&(n.message=t.message),t.confirmText&&(n.confirmText=t.confirmText),t.cancelText&&(n.cancelText=t.cancelText),t.variant&&(n.variant=t.variant),t.confirmColor&&(n.confirmColor=t.confirmColor),t.width&&n.style.setProperty("--dialog-width",t.width),t.content){const s=document.createElement("div");if(s.slot="content",typeof t.content=="function"){const a=t.content();a instanceof HTMLElement?s.appendChild(a):d.render(a,s)}else t.content instanceof HTMLElement?s.appendChild(t.content):d.render(t.content,s);n.appendChild(s)}this.activeDialogs.push(n)}else{if(i.content){const n=document.createElement("div");if(n.style.height="100%",n.style.width="100%",n.classList.add("schmancy-dialog-content-container"),typeof i.content=="function"){const t=i.content();t instanceof HTMLElement?n.appendChild(t):d.render(t,n)}else i.content instanceof HTMLElement?n.appendChild(i.content):d.render(i.content,n);e.appendChild(n)}i.options.width&&e.style.setProperty("--dialog-width",i.options.width),this.activeRawDialogs.push(e)}}),o.tap(({dialog:e,target:i})=>{const n=i.options.position||this.getCenteredPosition();if(e.show(n).then(t=>{if(i.resolve&&i.resolve(t),i.type==="confirm"){const s=this.activeDialogs.indexOf(e);s!==-1&&this.activeDialogs.splice(s,1);const a=e.querySelector('[slot="content"]');a&&e.removeChild(a)}else{const s=this.activeRawDialogs.indexOf(e);s!==-1&&this.activeRawDialogs.splice(s,1);const a=e.querySelector(".schmancy-dialog-content-container");a&&a.parentNode&&a.parentNode.removeChild(a)}e.parentElement&&e.parentElement.removeChild(e)}).catch(t=>{i.reject&&i.reject(t)}),i.options.onConfirm){const t=s=>{i.options.onConfirm(),e.removeEventListener("confirm",t)};e.addEventListener("confirm",t)}if(i.options.onCancel){const t=s=>{i.options.onCancel(),e.removeEventListener("cancel",t)};e.addEventListener("cancel",t)}})).subscribe()}setupDialogDismissLogic(){this.dismissSubject.pipe(o.switchMap(e=>o.forkJoin([o.fromEvent(window,p.DialogHereMorty).pipe(o.takeUntil(o.timer(100)),o.map(i=>i.detail),o.defaultIfEmpty(void 0)),o.of(e).pipe(o.tap(()=>{window.dispatchEvent(new CustomEvent(p.DialogWhereAreYouRicky,{detail:{uid:e},bubbles:!0,composed:!0}))}))])),o.tap(([e])=>{if(e?.dialog){e.dialog.hide(!1);const i=this.activeDialogs.indexOf(e.dialog);i!==-1&&this.activeDialogs.splice(i,1);const n=this.activeRawDialogs.indexOf(e.dialog);n!==-1&&this.activeRawDialogs.splice(n,1),e.dialog.parentElement&&e.dialog.parentElement.removeChild(e.dialog)}})).subscribe()}confirm(e){return new Promise((i,n)=>{const t={...l.DEFAULT_OPTIONS,...e};t.position||(t.position=this.getCenteredPosition());const s={options:t,type:"confirm",content:t.content,resolve:i,reject:n};this.dialogSubject.next(s)})}component(e,i={}){return new Promise((n,t)=>{i.position||(i.position=this.getCenteredPosition());const s={options:i,type:"component",content:e,resolve:n,reject:t};this.dialogSubject.next(s)})}dismiss(){if(this.activeRawDialogs.length>0){const e=this.activeRawDialogs[this.activeRawDialogs.length-1].getAttribute("uid");if(e)return this.dismissSubject.next(e),!0}if(this.activeDialogs.length>0){const e=this.activeDialogs[this.activeDialogs.length-1].getAttribute("uid");if(e)return this.dismissSubject.next(e),!0}return!1}ask(e,i){return this.confirm({message:e,position:i})}danger(e){return this.confirm({...e,variant:"danger"})}getCenteredPosition(){return{x:window.innerWidth/2,y:window.innerHeight/2}}};l.DEFAULT_OPTIONS={title:void 0,subtitle:void 0,confirmText:void 0,cancelText:void 0,variant:"default",width:"360px"};let r=l;const g={confirm:c=>r.getInstance().confirm(c),ask:(c,e)=>r.getInstance().ask(c,e),danger:c=>r.getInstance().danger(c),component:(c,e)=>r.getInstance().component(c,e),simple:(c,e)=>r.getInstance().component(c,e),dismiss:()=>r.getInstance().dismiss()};exports.$dialog=g,exports.DialogService=r;
|
|
2
|
+
//# sourceMappingURL=dialog-service-BZZK8N6A.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-service-BZZK8N6A.cjs","sources":["../src/dialog/dialog-service.ts"],"sourcesContent":["import { render, TemplateResult } from 'lit'\nimport { defaultIfEmpty, forkJoin, fromEvent, map, of, Subject, switchMap, takeUntil, tap, timer } from 'rxjs'\nimport { ConfirmDialog } from './dailog'\nimport { DialogHereMorty, DialogHereMortyEvent, DialogWhereAreYouRicky } from './dialog-events'\n\n/**\n * Dialog service options interface with component support\n */\nexport interface DialogOptions {\n\ttitle?: string\n\tsubtitle?: string\n\tmessage?: string\n\tconfirmText?: string\n\tcancelText?: string\n\tvariant?: 'default' | 'danger'\n\tconfirmColor?: 'primary' | 'error' | 'warning' | 'success' // Button color for confirm action\n\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\n\t// New options for component rendering\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\twidth?: string\n\tonConfirm?: () => void\n\tonCancel?: () => void\n\thideActions?: boolean // Set to true to hide all buttons and title\n\ttargetContainer?: HTMLElement // Container to append dialog to (defaults to document.body)\n}\n\ninterface DialogTarget {\n\toptions: DialogOptions\n\ttype: 'confirm' | 'component'\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\tresolve?: (value: boolean) => void\n\treject?: (reason?: any) => void\n}\n\n/**\n * Dialog service for centralized dialog management.\n * Provides a simple API for showing dialogs with optional custom components.\n */\nexport class DialogService {\n\tprivate static instance: DialogService\n\n\t// Default dialog options\n\tprivate static DEFAULT_OPTIONS: Partial<DialogOptions> = {\n\t\ttitle: undefined,\n\t\tsubtitle: undefined,\n\t\tconfirmText: undefined,\n\t\tcancelText: undefined,\n\t\tvariant: 'default',\n\t\twidth: '360px',\n\t}\n\n\t// Track active dialogs to handle dismissing the most recent one\n\tprivate activeDialogs: ConfirmDialog[] = []\n\t\n\t// Track component dialogs (schmancy-dialog instances)\n\tprivate activeRawDialogs: any[] = []\n\t\n\t// Subject for dialog opening requests\n\tprivate dialogSubject = new Subject<DialogTarget>()\n\t\n\t// Subject for dialog dismissal requests\n\tprivate dismissSubject = new Subject<string>()\n\n\t// Private constructor for singleton pattern\n\tprivate constructor() {\n\t\tthis.setupDialogOpeningLogic()\n\t\tthis.setupDialogDismissLogic()\n\t}\n\n\t/**\n\t * Get the singleton instance\n\t */\n\tpublic static getInstance(): DialogService {\n\t\tif (!DialogService.instance) {\n\t\t\tDialogService.instance = new DialogService()\n\t\t}\n\t\treturn DialogService.instance\n\t}\n\t\n\t/**\n\t * Sets up the main dialog opening logic using RxJS pipes\n\t */\n\tprivate setupDialogOpeningLogic() {\n\t\tthis.dialogSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<DialogHereMortyEvent>(window, DialogHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tconst uid = target.type === 'confirm' \n\t\t\t\t\t\t\t\t\t? `confirm-dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n\t\t\t\t\t\t\t\t\t: `dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(DialogWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Store uid in target for later use\n\t\t\t\t\t\t\t\t;(target as any).uid = uid\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\tmap(([response, target]) => {\n\t\t\t\t\tlet dialog: ConfirmDialog | any\n\t\t\t\t\tlet targetContainer: HTMLElement\n\t\t\t\t\t\n\t\t\t\t\tif (response?.dialog) {\n\t\t\t\t\t\t// Use existing dialog\n\t\t\t\t\t\tdialog = response.dialog\n\t\t\t\t\t\ttargetContainer = dialog.parentElement as HTMLElement\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Determine container - use responding theme or fallback\n\t\t\t\t\t\tif (response?.theme) {\n\t\t\t\t\t\t\ttargetContainer = response.theme as HTMLElement\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttargetContainer = target.options.targetContainer || \n\t\t\t\t\t\t\t document.querySelector('schmancy-theme') as HTMLElement || \n\t\t\t\t\t\t\t document.body\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Create appropriate dialog type\n\t\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t\tdialog = document.createElement('confirm-dialog') as ConfirmDialog\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdialog = document.createElement('schmancy-dialog')\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdialog.setAttribute('uid', (target as any).uid)\n\t\t\t\t\t\ttargetContainer.appendChild(dialog)\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn { dialog, target, targetContainer }\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t// Configure confirm dialog\n\t\t\t\t\t\tconst confirmDialog = dialog as ConfirmDialog\n\t\t\t\t\t\tconst options = target.options\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (options.title) confirmDialog.title = options.title\n\t\t\t\t\t\tif (options.subtitle) confirmDialog.subtitle = options.subtitle\n\t\t\t\t\t\tif (options.message) confirmDialog.message = options.message\n\t\t\t\t\t\tif (options.confirmText) confirmDialog.confirmText = options.confirmText\n\t\t\t\t\t\tif (options.cancelText) confirmDialog.cancelText = options.cancelText\n\t\t\t\t\t\tif (options.variant) confirmDialog.variant = options.variant\n\t\t\t\t\t\tif (options.confirmColor) confirmDialog.confirmColor = options.confirmColor\n\t\t\t\t\t\tif (options.width) confirmDialog.style.setProperty('--dialog-width', options.width)\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Handle custom content if provided\n\t\t\t\t\t\tif (options.content) {\n\t\t\t\t\t\t\tconst contentContainer = document.createElement('div')\n\t\t\t\t\t\t\tcontentContainer.slot = 'content'\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (typeof options.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = options.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tcontentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, contentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (options.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tcontentContainer.appendChild(options.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(options.content, contentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconfirmDialog.appendChild(contentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Add to active dialogs\n\t\t\t\t\t\tthis.activeDialogs.push(confirmDialog)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Configure component dialog\n\t\t\t\t\t\tif (target.content) {\n\t\t\t\t\t\t\tconst directContentContainer = document.createElement('div')\n\t\t\t\t\t\t\tdirectContentContainer.style.height = '100%'\n\t\t\t\t\t\t\tdirectContentContainer.style.width = '100%'\n\t\t\t\t\t\t\tdirectContentContainer.classList.add('schmancy-dialog-content-container')\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Render the content directly\n\t\t\t\t\t\t\tif (typeof target.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = target.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tdirectContentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, directContentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tdirectContentContainer.appendChild(target.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(target.content, directContentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdialog.appendChild(directContentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Set width from options\n\t\t\t\t\t\tif (target.options.width) {\n\t\t\t\t\t\t\tdialog.style.setProperty('--dialog-width', target.options.width)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Add to active raw dialogs\n\t\t\t\t\t\tthis.activeRawDialogs.push(dialog)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\t// Show dialog and handle promise resolution\n\t\t\t\t\tconst position = target.options.position || this.getCenteredPosition()\n\t\t\t\t\t\n\t\t\t\t\tdialog.show(position).then((result: boolean) => {\n\t\t\t\t\t\tif (target.resolve) {\n\t\t\t\t\t\t\ttarget.resolve(result)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Cleanup\n\t\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t\tconst index = this.activeDialogs.indexOf(dialog)\n\t\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\t\tthis.activeDialogs.splice(index, 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clean up content\n\t\t\t\t\t\t\tconst contentEl = dialog.querySelector('[slot=\"content\"]')\n\t\t\t\t\t\t\tif (contentEl) {\n\t\t\t\t\t\t\t\tdialog.removeChild(contentEl)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst index = this.activeRawDialogs.indexOf(dialog)\n\t\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\t\tthis.activeRawDialogs.splice(index, 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clean up content\n\t\t\t\t\t\t\tconst contentContainer = dialog.querySelector('.schmancy-dialog-content-container')\n\t\t\t\t\t\t\tif (contentContainer && contentContainer.parentNode) {\n\t\t\t\t\t\t\t\tcontentContainer.parentNode.removeChild(contentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove dialog from DOM\n\t\t\t\t\t\tif (dialog.parentElement) {\n\t\t\t\t\t\t\tdialog.parentElement.removeChild(dialog)\n\t\t\t\t\t\t}\n\t\t\t\t\t}).catch((error: any) => {\n\t\t\t\t\t\tif (target.reject) {\n\t\t\t\t\t\t\ttarget.reject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t\n\t\t\t\t\t// Set up event listeners for callbacks\n\t\t\t\t\tif (target.options.onConfirm) {\n\t\t\t\t\t\tconst onConfirm = (_e: Event) => {\n\t\t\t\t\t\t\ttarget.options.onConfirm!()\n\t\t\t\t\t\t\tdialog.removeEventListener('confirm', onConfirm)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdialog.addEventListener('confirm', onConfirm)\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (target.options.onCancel) {\n\t\t\t\t\t\tconst onCancel = (_e: Event) => {\n\t\t\t\t\t\t\ttarget.options.onCancel!()\n\t\t\t\t\t\t\tdialog.removeEventListener('cancel', onCancel)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdialog.addEventListener('cancel', onCancel)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\t\n\t/**\n\t * Sets up the dialog dismissal logic\n\t */\n\tprivate setupDialogDismissLogic() {\n\t\tthis.dismissSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<DialogHereMortyEvent>(window, DialogHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(DialogWhereAreYouRicky, { \n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([response]) => {\n\t\t\t\t\tif (response?.dialog) {\n\t\t\t\t\t\t// Hide the dialog\n\t\t\t\t\t\tresponse.dialog.hide(false)\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove from tracking arrays\n\t\t\t\t\t\tconst confirmIndex = this.activeDialogs.indexOf(response.dialog)\n\t\t\t\t\t\tif (confirmIndex !== -1) {\n\t\t\t\t\t\t\tthis.activeDialogs.splice(confirmIndex, 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst rawIndex = this.activeRawDialogs.indexOf(response.dialog)\n\t\t\t\t\t\tif (rawIndex !== -1) {\n\t\t\t\t\t\t\tthis.activeRawDialogs.splice(rawIndex, 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove dialog from DOM immediately\n\t\t\t\t\t\tif (response.dialog.parentElement) {\n\t\t\t\t\t\t\tresponse.dialog.parentElement.removeChild(response.dialog)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Show a confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic confirm(options: DialogOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// Apply default options\n\t\t\tconst completeOptions = {\n\t\t\t\t...DialogService.DEFAULT_OPTIONS,\n\t\t\t\t...options,\n\t\t\t}\n\n\t\t\t// If no position is provided, center the dialog\n\t\t\tif (!completeOptions.position) {\n\t\t\t\tcompleteOptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\t// Create dialog target and emit to subject\n\t\t\tconst target: DialogTarget = {\n\t\t\t\toptions: completeOptions,\n\t\t\t\ttype: 'confirm',\n\t\t\t\tcontent: completeOptions.content,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next(target)\n\t\t})\n\t}\n\n\t/**\n\t * Show a dialog with custom component content\n\t * Always renders content directly without any headers or action buttons\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tpublic component(\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions: Omit<DialogOptions, 'content' | 'message'> = {},\n\t): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// If no position is provided, center the dialog\n\t\t\tif (!options.position) {\n\t\t\t\toptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\t// Create dialog target and emit to subject\n\t\t\tconst target: DialogTarget = {\n\t\t\t\toptions: options as DialogOptions,\n\t\t\t\ttype: 'component',\n\t\t\t\tcontent,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next(target)\n\t\t})\n\t}\n\n\t/**\n\t * Dismiss the most recently opened dialog (either confirm or component type)\n\t * @returns true if a dialog was dismissed, false if no dialogs were open\n\t */\n\tpublic dismiss(): boolean {\n\t\t// Try component dialog first (they're more likely to be on top)\n\t\tif (this.activeRawDialogs.length > 0) {\n\t\t\t// Get the most recently opened raw dialog (last in the array)\n\t\t\tconst dialog = this.activeRawDialogs[this.activeRawDialogs.length - 1]\n\t\t\tconst uid = dialog.getAttribute('uid')\n\t\t\t\n\t\t\tif (uid) {\n\t\t\t\tthis.dismissSubject.next(uid)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Fall back to confirm dialogs\n\t\tif (this.activeDialogs.length > 0) {\n\t\t\t// Get the most recently opened dialog (last in the array)\n\t\t\tconst dialog = this.activeDialogs[this.activeDialogs.length - 1]\n\t\t\tconst uid = dialog.getAttribute('uid')\n\t\t\t\n\t\t\tif (uid) {\n\t\t\t\tthis.dismissSubject.next(uid)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\t/**\n\t * Show a simple confirmation dialog with just a message\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tposition: event,\n\t\t})\n\t}\n\n\t/**\n\t * Show a danger confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic danger(options: Omit<DialogOptions, 'variant'>): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\t...options,\n\t\t\tvariant: 'danger',\n\t\t})\n\t}\n\n\t/**\n\t * Get a centered position for the dialog\n\t */\n\tprivate getCenteredPosition(): { x: number; y: number } {\n\t\treturn {\n\t\t\tx: window.innerWidth / 2,\n\t\t\ty: window.innerHeight / 2,\n\t\t}\n\t}\n\n}\n\n/**\n * Global dialog utility - provides a quick way to show dialogs\n */\nexport const $dialog = {\n\t/**\n\t * Show a confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tconfirm: (options: DialogOptions): Promise<boolean> => {\n\t\treturn DialogService.getInstance().confirm(options)\n\t},\n\n\t/**\n\t * Show a simple confirmation dialog with just a message\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\task: (message: string, event?: MouseEvent | TouchEvent): Promise<boolean> => {\n\t\treturn DialogService.getInstance().ask(message, event)\n\t},\n\n\t/**\n\t * Show a danger confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tdanger: (options: Omit<DialogOptions, 'variant'>): Promise<boolean> => {\n\t\treturn DialogService.getInstance().danger(options)\n\t},\n\n\t/**\n\t * Show a dialog with custom component content\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tcomponent: (\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions?: Omit<DialogOptions, 'content' | 'message'>,\n\t): Promise<boolean> => {\n\t\treturn DialogService.getInstance().component(content, options)\n\t},\n\n\t/**\n\t * Show a simple dialog without title or actions, just content\n\t * This is an alias for component() since all component dialogs are now simple by design\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tsimple: (\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions?: Omit<DialogOptions, 'content' | 'message' | 'title' | 'confirmText' | 'cancelText'>,\n\t): Promise<boolean> => {\n\t\treturn DialogService.getInstance().component(content, options)\n\t},\n\n\t/**\n\t * Dismiss the most recently opened dialog\n\t * @returns true if a dialog was dismissed, false if no dialogs were open\n\t */\n\tdismiss: (): boolean => {\n\t\treturn DialogService.getInstance().dismiss()\n\t},\n}\n\nexport default DialogService"],"names":["DialogService","constructor","this","activeDialogs","activeRawDialogs","dialogSubject","Subject","dismissSubject","setupDialogOpeningLogic","setupDialogDismissLogic","getInstance","instance","pipe","switchMap","forkJoin","fromEvent","window","DialogHereMorty","takeUntil","timer","map","e","detail","defaultIfEmpty","of","target","tap","uid","type","Date","now","Math","random","toString","substring","dispatchEvent","CustomEvent","DialogWhereAreYouRicky","bubbles","composed","response","dialog","targetContainer","parentElement","theme","options","document","querySelector","body","createElement","setAttribute","appendChild","n","confirmDialog","title","subtitle","message","confirmText","cancelText","variant","confirmColor","width","style","setProperty","content","contentContainer","slot","result","HTMLElement","render","push","directContentContainer","height","classList","add","position","getCenteredPosition","show","then","resolve","index","indexOf","splice","contentEl","removeChild","parentNode","catch","error","reject","onConfirm","_e","removeEventListener","addEventListener","onCancel","subscribe","hide","confirmIndex","rawIndex","Promise","completeOptions","DEFAULT_OPTIONS","next","length","getAttribute","event","confirm","x","innerWidth","y","innerHeight","$dialog","ask","danger","component","simple","dismiss"],"mappings":"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"}
|