@yoozsoft/yoozsoft-ng 5.3.5 → 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +143 -24
  2. package/assets/js/UTIF.js-master/LICENSE +21 -21
  3. package/assets/js/UTIF.js-master/README.md +72 -72
  4. package/assets/js/UTIF.js-master/UTIF.js +1762 -1762
  5. package/assets/js/UTIF.js-master/package-lock.json +13 -13
  6. package/assets/js/UTIF.js-master/package.json +24 -0
  7. package/assets/styles/components/_ys-navbar.scss +22 -0
  8. package/assets/styles/components/_ys-pagination.scss +10 -0
  9. package/assets/styles/{ys-layout.scss → utilities/ys-layout.scss} +1 -1
  10. package/assets/styles/ys-styles.scss +2 -0
  11. package/autocomplete/package.json +4 -0
  12. package/date/package.json +4 -0
  13. package/datepicker/package.json +4 -0
  14. package/dropdown/package.json +4 -0
  15. package/fesm2022/yoozsoft-yoozsoft-ng-autocomplete.mjs +257 -197
  16. package/fesm2022/yoozsoft-yoozsoft-ng-autocomplete.mjs.map +1 -1
  17. package/fesm2022/yoozsoft-yoozsoft-ng-date.mjs +562 -0
  18. package/fesm2022/yoozsoft-yoozsoft-ng-date.mjs.map +1 -0
  19. package/fesm2022/yoozsoft-yoozsoft-ng-datepicker.mjs +600 -837
  20. package/fesm2022/yoozsoft-yoozsoft-ng-datepicker.mjs.map +1 -1
  21. package/fesm2022/yoozsoft-yoozsoft-ng-dropdown.mjs +161 -151
  22. package/fesm2022/yoozsoft-yoozsoft-ng-dropdown.mjs.map +1 -1
  23. package/fesm2022/yoozsoft-yoozsoft-ng-file-upload.mjs +93 -103
  24. package/fesm2022/yoozsoft-yoozsoft-ng-file-upload.mjs.map +1 -1
  25. package/fesm2022/yoozsoft-yoozsoft-ng-footer.mjs +16 -21
  26. package/fesm2022/yoozsoft-yoozsoft-ng-footer.mjs.map +1 -1
  27. package/fesm2022/yoozsoft-yoozsoft-ng-loading.mjs +20 -24
  28. package/fesm2022/yoozsoft-yoozsoft-ng-loading.mjs.map +1 -1
  29. package/fesm2022/yoozsoft-yoozsoft-ng-navbar.mjs +60 -76
  30. package/fesm2022/yoozsoft-yoozsoft-ng-navbar.mjs.map +1 -1
  31. package/fesm2022/yoozsoft-yoozsoft-ng-overlay.mjs +11 -15
  32. package/fesm2022/yoozsoft-yoozsoft-ng-overlay.mjs.map +1 -1
  33. package/fesm2022/yoozsoft-yoozsoft-ng-pagination.mjs +61 -55
  34. package/fesm2022/yoozsoft-yoozsoft-ng-pagination.mjs.map +1 -1
  35. package/fesm2022/yoozsoft-yoozsoft-ng-password-strength.mjs +142 -130
  36. package/fesm2022/yoozsoft-yoozsoft-ng-password-strength.mjs.map +1 -1
  37. package/fesm2022/yoozsoft-yoozsoft-ng-pipes.mjs +44 -0
  38. package/fesm2022/yoozsoft-yoozsoft-ng-pipes.mjs.map +1 -0
  39. package/fesm2022/yoozsoft-yoozsoft-ng-progress.mjs +51 -34
  40. package/fesm2022/yoozsoft-yoozsoft-ng-progress.mjs.map +1 -1
  41. package/fesm2022/yoozsoft-yoozsoft-ng-rating.mjs +155 -0
  42. package/fesm2022/yoozsoft-yoozsoft-ng-rating.mjs.map +1 -0
  43. package/fesm2022/yoozsoft-yoozsoft-ng-select.mjs +78 -80
  44. package/fesm2022/yoozsoft-yoozsoft-ng-select.mjs.map +1 -1
  45. package/fesm2022/yoozsoft-yoozsoft-ng-sidebar.mjs +99 -99
  46. package/fesm2022/yoozsoft-yoozsoft-ng-sidebar.mjs.map +1 -1
  47. package/fesm2022/yoozsoft-yoozsoft-ng-table.mjs +316 -0
  48. package/fesm2022/yoozsoft-yoozsoft-ng-table.mjs.map +1 -0
  49. package/fesm2022/yoozsoft-yoozsoft-ng-tiff-viewer.mjs +128 -114
  50. package/fesm2022/yoozsoft-yoozsoft-ng-tiff-viewer.mjs.map +1 -1
  51. package/fesm2022/yoozsoft-yoozsoft-ng-toast.mjs +112 -62
  52. package/fesm2022/yoozsoft-yoozsoft-ng-toast.mjs.map +1 -1
  53. package/fesm2022/yoozsoft-yoozsoft-ng-validators.mjs +37 -0
  54. package/fesm2022/yoozsoft-yoozsoft-ng-validators.mjs.map +1 -0
  55. package/fesm2022/yoozsoft-yoozsoft-ng.mjs.map +1 -1
  56. package/file-upload/package.json +4 -0
  57. package/footer/package.json +4 -0
  58. package/loading/package.json +4 -0
  59. package/navbar/package.json +4 -0
  60. package/overlay/package.json +4 -0
  61. package/package.json +61 -38
  62. package/pagination/package.json +4 -0
  63. package/password-strength/package.json +4 -0
  64. package/pipes/package.json +4 -0
  65. package/progress/package.json +4 -0
  66. package/rating/package.json +4 -0
  67. package/select/package.json +4 -0
  68. package/sidebar/package.json +4 -0
  69. package/table/package.json +4 -0
  70. package/tiff-viewer/package.json +4 -0
  71. package/toast/package.json +4 -0
  72. package/types/yoozsoft-yoozsoft-ng-autocomplete.d.ts +79 -0
  73. package/types/yoozsoft-yoozsoft-ng-date.d.ts +118 -0
  74. package/types/yoozsoft-yoozsoft-ng-datepicker.d.ts +120 -0
  75. package/types/yoozsoft-yoozsoft-ng-dropdown.d.ts +76 -0
  76. package/types/yoozsoft-yoozsoft-ng-file-upload.d.ts +75 -0
  77. package/types/yoozsoft-yoozsoft-ng-footer.d.ts +26 -0
  78. package/types/yoozsoft-yoozsoft-ng-loading.d.ts +14 -0
  79. package/types/yoozsoft-yoozsoft-ng-navbar.d.ts +60 -0
  80. package/types/yoozsoft-yoozsoft-ng-overlay.d.ts +10 -0
  81. package/types/yoozsoft-yoozsoft-ng-pagination.d.ts +31 -0
  82. package/types/yoozsoft-yoozsoft-ng-password-strength.d.ts +73 -0
  83. package/types/yoozsoft-yoozsoft-ng-pipes.d.ts +11 -0
  84. package/types/yoozsoft-yoozsoft-ng-progress.d.ts +31 -0
  85. package/types/yoozsoft-yoozsoft-ng-rating.d.ts +56 -0
  86. package/types/yoozsoft-yoozsoft-ng-select.d.ts +43 -0
  87. package/types/yoozsoft-yoozsoft-ng-sidebar.d.ts +69 -0
  88. package/types/yoozsoft-yoozsoft-ng-table.d.ts +137 -0
  89. package/types/yoozsoft-yoozsoft-ng-tiff-viewer.d.ts +53 -0
  90. package/types/yoozsoft-yoozsoft-ng-toast.d.ts +66 -0
  91. package/types/yoozsoft-yoozsoft-ng-validators.d.ts +5 -0
  92. package/validators/package.json +4 -0
  93. package/autocomplete/index.d.ts +0 -71
  94. package/datepicker/index.d.ts +0 -291
  95. package/directives/index.d.ts +0 -17
  96. package/dropdown/index.d.ts +0 -62
  97. package/fesm2022/yoozsoft-yoozsoft-ng-directives.mjs +0 -57
  98. package/fesm2022/yoozsoft-yoozsoft-ng-directives.mjs.map +0 -1
  99. package/file-upload/index.d.ts +0 -72
  100. package/footer/index.d.ts +0 -25
  101. package/loading/index.d.ts +0 -13
  102. package/navbar/index.d.ts +0 -56
  103. package/overlay/index.d.ts +0 -11
  104. package/pagination/index.d.ts +0 -29
  105. package/password-strength/index.d.ts +0 -84
  106. package/progress/index.d.ts +0 -28
  107. package/select/index.d.ts +0 -39
  108. package/sidebar/index.d.ts +0 -94
  109. package/tiff-viewer/index.d.ts +0 -52
  110. package/toast/index.d.ts +0 -53
  111. /package/assets/styles/{ys-preloader-9.scss → preloaders/ys-preloader-9.scss} +0 -0
  112. /package/assets/styles/{ys-preloader.scss → preloaders/ys-preloader.scss} +0 -0
  113. /package/{index.d.ts → types/yoozsoft-yoozsoft-ng.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yoozsoft-yoozsoft-ng-date.mjs","sources":["../../../../projects/yoozsoft/yoozsoft-ng/date/src/jalali/date.constants.ts","../../../../projects/yoozsoft/yoozsoft-ng/date/src/jalali/jalali-date.ts","../../../../projects/yoozsoft/yoozsoft-ng/date/src/adapters/gregorian-calendar-adapter.ts","../../../../projects/yoozsoft/yoozsoft-ng/date/src/adapters/jalali-calendar-adapter.ts","../../../../projects/yoozsoft/yoozsoft-ng/date/src/adapters/adapters-factory.ts","../../../../projects/yoozsoft/yoozsoft-ng/date/src/utils/date.utils.ts","../../../../projects/yoozsoft/yoozsoft-ng/date/public-api.ts","../../../../projects/yoozsoft/yoozsoft-ng/date/yoozsoft-yoozsoft-ng-date.ts"],"sourcesContent":["export const GREGORIAN_MONTHS = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December'\r\n];\r\n\r\nexport const GREGORIAN_WEEKDAYS = [\r\n 'Monday',\r\n 'Tuesday',\r\n 'Wednesday',\r\n 'Thursday',\r\n 'Friday',\r\n 'Saturday',\r\n 'Sunday',\r\n];\r\n\r\nexport const PERSIAN_MONTHS = [\r\n 'فروردین',\r\n 'اردیبهشت',\r\n 'خرداد',\r\n 'تیر',\r\n 'مرداد',\r\n 'شهریور',\r\n 'مهر',\r\n 'آبان',\r\n 'آذر',\r\n 'دی',\r\n 'بهمن',\r\n 'اسفند'\r\n];\r\n\r\nexport const PERSIAN_MONTH_SHORT = [\r\n 'فرو',\r\n 'ارد',\r\n 'خرد',\r\n 'تیر',\r\n 'مرد',\r\n 'شهر',\r\n 'مهر',\r\n 'آبا',\r\n 'آذر',\r\n 'دی',\r\n 'بهم',\r\n 'اسف'\r\n];\r\n\r\nexport const PERSIAN_WEEKDAYS = [\r\n 'دوشنبه',\r\n 'سه‌شنبه',\r\n 'چهارشنبه',\r\n 'پنجشنبه',\r\n 'جمعه',\r\n 'شنبه',\r\n 'یکشنبه'\r\n];\r\n\r\nexport const PERSIAN_WEEKDAYS_SHORT = [\r\n 'د',\r\n 'س',\r\n 'چ',\r\n 'پ',\r\n 'ج',\r\n 'ش',\r\n 'ی'\r\n];","import { NgbDateStruct } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { JalaliDateParts } from \"../models/date.model\";\r\nimport { PERSIAN_MONTHS, PERSIAN_WEEKDAYS } from \"./date.constants\";\r\n\r\nexport class JalaliDate {\r\n\r\n private static calendarDaysInMonth = {\r\n g_days_in_month: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\r\n j_days_in_month: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29],\r\n };\r\n\r\n // private static readonly supportedTokens = [\r\n // 'yyyy',\r\n // 'yy',\r\n // 'MMMM',\r\n // 'MM',\r\n // 'M',\r\n // 'dd',\r\n // 'd',\r\n // 'HH',\r\n // 'H',\r\n // 'mm',\r\n // 'm',\r\n // 'ss',\r\n // 's',\r\n // 'EEEE'\r\n // ];\r\n\r\n private static validateJalaliDate(year: number, month: number, day: number) {\r\n if (year < 1) {\r\n throw new Error('Invalid Jalali year');\r\n }\r\n\r\n if (month < 1 || month > 12) {\r\n throw new Error('Invalid Jalali month');\r\n }\r\n\r\n const maxDay = this.daysInMonth(year, month);\r\n\r\n if (day < 1 || day > maxDay) {\r\n throw new Error('Invalid Jalali day');\r\n }\r\n }\r\n\r\n private static validateGregorianDate(year: number, month: number, day: number) {\r\n if (year < 1) {\r\n throw new Error('Invalid Gregorian year');\r\n }\r\n\r\n if (month < 1 || month > 12) {\r\n throw new Error('Invalid Gregorian month');\r\n }\r\n\r\n let maxDay = this.calendarDaysInMonth.g_days_in_month[month - 1];\r\n\r\n // Check leap year for February\r\n if (month === 2 && ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0)) {\r\n maxDay = 29;\r\n }\r\n\r\n if (day < 1 || day > maxDay) {\r\n throw new Error('Invalid Gregorian day');\r\n }\r\n }\r\n\r\n // validation\r\n static isValid(year: number, month: number, day: number): boolean {\r\n\r\n if (year < 1) return false;\r\n\r\n if (month < 1 || month > 12) {\r\n return false;\r\n }\r\n\r\n return day >= 1 &&\r\n day <= this.daysInMonth(year, month);\r\n\r\n }\r\n\r\n static isLeapYear(year: number): boolean {\r\n\r\n const mod = year % 33;\r\n\r\n return [\r\n 1, 5, 9, 13,\r\n 17, 22, 26, 30\r\n ].includes(mod);\r\n\r\n }\r\n\r\n // month\r\n static daysInMonth(year: number, month: number): number {\r\n\r\n if (month <= 6) {\r\n return 31;\r\n }\r\n\r\n if (month <= 11) {\r\n return 30;\r\n }\r\n\r\n return this.isLeapYear(year)\r\n ? 30\r\n : 29;\r\n }\r\n\r\n static monthName(month: number): string {\r\n return PERSIAN_MONTHS[month - 1] ?? '';\r\n }\r\n\r\n static weekdayName(day: number): string {\r\n return PERSIAN_WEEKDAYS[day] ?? '';\r\n }\r\n\r\n // week\r\n static dayOfWeek(year: number, month: number, day: number): number {\r\n\r\n const date = this.toDate({\r\n year,\r\n month,\r\n day\r\n });\r\n\r\n const jsDay = date.getDay();\r\n\r\n return jsDay === 0\r\n ? 7\r\n : jsDay;\r\n\r\n }\r\n\r\n static weekDayName(day: number): string {\r\n return PERSIAN_WEEKDAYS[day] ?? '';\r\n }\r\n\r\n // current\r\n static today(): JalaliDateParts {\r\n\r\n return this.fromDate(new Date());\r\n\r\n }\r\n\r\n // compare\r\n static compare(a: JalaliDateParts, b: JalaliDateParts): number {\r\n\r\n const d1 = this.toDate(a).getTime();\r\n const d2 = this.toDate(b).getTime();\r\n\r\n if (d1 === d2) {\r\n return 0;\r\n }\r\n\r\n return d1 > d2 ? 1 : -1;\r\n }\r\n\r\n // parse\r\n static parse(value: string): JalaliDateParts | null {\r\n\r\n const match =\r\n value.match(\r\n /^(\\d{4})[-\\/](\\d{1,2})[-\\/](\\d{1,2})$/\r\n );\r\n\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const date = {\r\n year: +match[1],\r\n month: +match[2],\r\n day: +match[3]\r\n };\r\n\r\n return this.isValid(\r\n date.year,\r\n date.month,\r\n date.day\r\n )\r\n ? date\r\n : null;\r\n }\r\n\r\n // arithmetic\r\n static addDays(date: JalaliDateParts, days: number): JalaliDateParts {\r\n\r\n const result = this.toDate(date);\r\n\r\n result.setDate(\r\n result.getDate() + days\r\n );\r\n\r\n return this.fromDate(result);\r\n\r\n }\r\n\r\n static addMonths(date: JalaliDateParts, months: number): JalaliDateParts {\r\n\r\n const result = this.toDate(date);\r\n\r\n result.setMonth(\r\n result.getMonth() + months\r\n );\r\n\r\n return this.fromDate(result);\r\n\r\n }\r\n\r\n static addYears(date: JalaliDateParts, years: number): JalaliDateParts {\r\n\r\n const result = this.toDate(date);\r\n\r\n result.setFullYear(\r\n result.getFullYear() + years\r\n );\r\n\r\n return this.fromDate(result);\r\n\r\n }\r\n\r\n // conversion helpers\r\n static fromDate(date: Date): JalaliDateParts {\r\n\r\n const jDate =\r\n this.gregorianToJalali(\r\n date.getFullYear(),\r\n date.getMonth() + 1,\r\n date.getDate()\r\n );\r\n\r\n return {\r\n year: jDate.year,\r\n month: jDate.month,\r\n day: jDate.day\r\n };\r\n }\r\n\r\n static toDate(date: JalaliDateParts): Date {\r\n\r\n const gDate =\r\n this.jalaliToGregorian(\r\n date.year,\r\n date.month,\r\n date.day\r\n );\r\n\r\n return new Date(\r\n gDate.year,\r\n gDate.month - 1,\r\n gDate.day\r\n );\r\n }\r\n\r\n // format\r\n static format(value: Date | string | number, format = 'yyyy/MM/dd'): string {\r\n\r\n let date: Date;\r\n\r\n if (value instanceof Date) {\r\n date = value;\r\n }\r\n else {\r\n date = new Date(value);\r\n }\r\n\r\n if (isNaN(date.getTime())) {\r\n return '';\r\n }\r\n\r\n const j = this.gregorianToJalali(\r\n date.getFullYear(),\r\n date.getMonth() + 1,\r\n date.getDate()\r\n );\r\n\r\n const pad = (v: number) => String(v).padStart(2, '0');\r\n\r\n const weekdayIndex = (date.getDay() + 1) % 7;\r\n\r\n const tokens: Record<string, string> = {\r\n yyyy: String(j.year),\r\n yy: String(j.year).slice(-2),\r\n\r\n MM: pad(j.month),\r\n M: String(j.month),\r\n\r\n dd: pad(j.day),\r\n d: String(j.day),\r\n\r\n HH: pad(date.getHours()),\r\n H: String(date.getHours()),\r\n\r\n mm: pad(date.getMinutes()),\r\n m: String(date.getMinutes()),\r\n\r\n ss: pad(date.getSeconds()),\r\n s: String(date.getSeconds()),\r\n\r\n MMMM: PERSIAN_MONTHS[j.month - 1],\r\n\r\n EEEE: PERSIAN_WEEKDAYS[weekdayIndex]\r\n };\r\n\r\n return format.replace(\r\n /yyyy|yy|MMMM|MM|M|dd|d|HH|H|mm|m|ss|s|EEEE/g,\r\n token => tokens[token]\r\n );\r\n }\r\n\r\n // conversion\r\n static gregorianToJalali(\r\n year: number,\r\n month: number,\r\n day: number\r\n ): JalaliDateParts {\r\n // Floor inputs\r\n year = Math.floor(year);\r\n month = Math.floor(month);\r\n day = Math.floor(day);\r\n\r\n // Validate inputs\r\n this.validateGregorianDate(year, month, day);\r\n\r\n let gy = year - 1600;\r\n let gm = month - 1;\r\n let gd = day - 1;\r\n\r\n // Calculate number of days passed since Gregorian epoch\r\n let g_day_no =\r\n 365 * gy +\r\n Math.floor((gy + 3) / 4) -\r\n Math.floor((gy + 99) / 100) +\r\n Math.floor((gy + 399) / 400);\r\n\r\n for (let i = 0; i < gm; ++i) g_day_no += this.calendarDaysInMonth.g_days_in_month[i];\r\n\r\n if (\r\n gm > 1 &&\r\n ((gy % 4 === 0 && gy % 100 !== 0) || gy % 400 === 0)\r\n )\r\n g_day_no++;\r\n\r\n g_day_no += gd;\r\n\r\n let j_day_no = g_day_no - 79;\r\n let j_np = Math.floor(j_day_no / 12053);\r\n j_day_no %= 12053;\r\n\r\n let jy = 979 + 33 * j_np + 4 * Math.floor(j_day_no / 1461);\r\n j_day_no %= 1461;\r\n\r\n if (j_day_no >= 366) {\r\n jy += Math.floor((j_day_no - 1) / 365);\r\n j_day_no = (j_day_no - 1) % 365;\r\n }\r\n\r\n let jm = 0;\r\n let jd = 0;\r\n\r\n for (let i = 0; i < 11 && j_day_no >= this.calendarDaysInMonth.j_days_in_month[i]; ++i) {\r\n j_day_no -= this.calendarDaysInMonth.j_days_in_month[i];\r\n jm = i + 1;\r\n }\r\n jm++;\r\n jd = j_day_no + 1;\r\n\r\n return {\r\n year: jy,\r\n month: jm,\r\n day: jd\r\n };\r\n }\r\n\r\n static jalaliToGregorian(\r\n year: number,\r\n month: number,\r\n day: number\r\n ): JalaliDateParts {\r\n // Floor inputs to make sure they are integers\r\n year = Math.floor(year);\r\n month = Math.floor(month);\r\n day = Math.floor(day);\r\n\r\n // Validate inputs\r\n this.validateJalaliDate(year, month, day);\r\n\r\n let jy = year - 979;\r\n let jm = month - 1;\r\n let jd = day - 1;\r\n\r\n // Calculate number of days passed since Jalali epoch\r\n let j_day_no =\r\n 365 * jy + Math.floor(jy / 33) * 8 + Math.floor(((jy % 33) + 3) / 4);\r\n for (let i = 0; i < jm; ++i)\r\n j_day_no += this.calendarDaysInMonth.j_days_in_month[i];\r\n j_day_no += jd;\r\n\r\n // Convert to Gregorian day number\r\n let g_day_no = j_day_no + 79;\r\n\r\n // Calculate Gregorian year\r\n let gy = 1600 + 400 * Math.floor(g_day_no / 146097);\r\n g_day_no %= 146097;\r\n\r\n let leap = true;\r\n if (g_day_no >= 36525) {\r\n g_day_no--;\r\n gy += 100 * Math.floor(g_day_no / 36524);\r\n g_day_no %= 36524;\r\n\r\n if (g_day_no >= 365) g_day_no++;\r\n else leap = false;\r\n }\r\n\r\n gy += 4 * Math.floor(g_day_no / 1461);\r\n g_day_no %= 1461;\r\n\r\n if (g_day_no >= 366) {\r\n leap = false;\r\n g_day_no--;\r\n gy += Math.floor(g_day_no / 365);\r\n g_day_no %= 365;\r\n }\r\n\r\n // Calculate Gregorian month and day\r\n let gm = 0;\r\n let gd = 0;\r\n for (\r\n let i = 0;\r\n g_day_no >=\r\n this.calendarDaysInMonth.g_days_in_month[i] + (i === 1 && leap ? 1 : 0);\r\n i++\r\n ) {\r\n g_day_no -= this.calendarDaysInMonth.g_days_in_month[i] + (i === 1 && leap ? 1 : 0);\r\n gm = i + 1;\r\n }\r\n gm++;\r\n gd = g_day_no + 1;\r\n\r\n return {\r\n year: gy,\r\n month: gm,\r\n day: gd\r\n };\r\n\r\n }\r\n\r\n static toNgbDateStruct(date: JalaliDateParts): NgbDateStruct {\r\n\r\n return {\r\n year: date.year,\r\n month: date.month,\r\n day: date.day\r\n };\r\n }\r\n\r\n static fromNgbDateStruct(date: NgbDateStruct): JalaliDateParts {\r\n\r\n return {\r\n year: date.year,\r\n month: date.month,\r\n day: date.day\r\n };\r\n }\r\n\r\n static isBetween(value: JalaliDateParts, start: JalaliDateParts, end: JalaliDateParts): boolean {\r\n\r\n return (\r\n this.compare(value, start) >= 0 &&\r\n this.compare(value, end) <= 0\r\n );\r\n }\r\n\r\n}","import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GREGORIAN_MONTHS, GREGORIAN_WEEKDAYS } from '../jalali';\r\nimport { CalendarAdapter } from './calendar-adapter';\r\n\r\nexport class GregorianCalendarAdapter\r\n implements CalendarAdapter {\r\n\r\n today(): NgbDateStruct {\r\n\r\n const now = new Date();\r\n\r\n return {\r\n year: now.getFullYear(),\r\n month: now.getMonth() + 1,\r\n day: now.getDate()\r\n };\r\n }\r\n\r\n isValid(\r\n year: number,\r\n month: number,\r\n day: number\r\n ): boolean {\r\n\r\n const date =\r\n new Date(\r\n year,\r\n month - 1,\r\n day\r\n );\r\n\r\n return (\r\n date.getFullYear() === year &&\r\n date.getMonth() === month - 1 &&\r\n date.getDate() === day\r\n );\r\n }\r\n\r\n daysInMonth(\r\n year: number,\r\n month: number\r\n ): number {\r\n\r\n return new Date(\r\n year,\r\n month,\r\n 0\r\n ).getDate();\r\n\r\n }\r\n\r\n dayOfWeek(\r\n year: number,\r\n month: number,\r\n day: number\r\n ): number {\r\n\r\n const jsDay = new Date(\r\n year,\r\n month - 1,\r\n day\r\n ).getDay();\r\n\r\n return jsDay === 0\r\n ? 7\r\n : jsDay;\r\n\r\n }\r\n\r\n monthName(month: number): string {\r\n\r\n return GREGORIAN_MONTHS[month - 1] ?? '';\r\n\r\n }\r\n\r\n weekdayName(day: number): string {\r\n\r\n return GREGORIAN_WEEKDAYS[day] ?? '';\r\n\r\n }\r\n\r\n compare(\r\n a: NgbDateStruct,\r\n b: NgbDateStruct\r\n ): number {\r\n\r\n const t1 =\r\n this.toDate(a).getTime();\r\n\r\n const t2 =\r\n this.toDate(b).getTime();\r\n\r\n if (t1 === t2) {\r\n return 0;\r\n }\r\n\r\n return t1 > t2 ? 1 : -1;\r\n }\r\n\r\n addDays(\r\n date: NgbDateStruct,\r\n days: number\r\n ): NgbDateStruct {\r\n\r\n const d = this.toDate(date);\r\n\r\n d.setDate(\r\n d.getDate() + days\r\n );\r\n\r\n return this.fromDate(d);\r\n }\r\n\r\n addMonths(\r\n date: NgbDateStruct,\r\n months: number\r\n ): NgbDateStruct {\r\n\r\n const d = this.toDate(date);\r\n\r\n d.setMonth(\r\n d.getMonth() + months\r\n );\r\n\r\n return this.fromDate(d);\r\n }\r\n\r\n addYears(\r\n date: NgbDateStruct,\r\n years: number\r\n ): NgbDateStruct {\r\n\r\n const d = this.toDate(date);\r\n\r\n d.setFullYear(\r\n d.getFullYear() + years\r\n );\r\n\r\n return this.fromDate(d);\r\n }\r\n\r\n toDate(\r\n date: NgbDateStruct\r\n ): Date {\r\n\r\n return new Date(\r\n date.year,\r\n date.month - 1,\r\n date.day\r\n );\r\n }\r\n\r\n fromDate(\r\n date: Date\r\n ): NgbDateStruct {\r\n\r\n return {\r\n year: date.getFullYear(),\r\n month: date.getMonth() + 1,\r\n day: date.getDate()\r\n };\r\n }\r\n\r\n parse(\r\n value: string\r\n ): NgbDateStruct | null {\r\n\r\n const match =\r\n value.match(\r\n /^(\\d{4})[-\\/](\\d{1,2})[-\\/](\\d{1,2})$/\r\n );\r\n\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const result = {\r\n year: +match[1],\r\n month: +match[2],\r\n day: +match[3]\r\n };\r\n\r\n return this.isValid(\r\n result.year,\r\n result.month,\r\n result.day\r\n )\r\n ? result\r\n : null;\r\n }\r\n\r\n format(\r\n value: Date | string | number,\r\n format = 'yyyy/MM/dd'\r\n ): string {\r\n\r\n const date =\r\n value instanceof Date\r\n ? value\r\n : new Date(value);\r\n\r\n if (isNaN(date.getTime())) {\r\n return '';\r\n }\r\n\r\n const pad =\r\n (v: number) =>\r\n String(v).padStart(2, '0');\r\n\r\n return format\r\n .replace('yyyy', String(date.getFullYear()))\r\n .replace('MM', pad(date.getMonth() + 1))\r\n .replace('dd', pad(date.getDate()));\r\n }\r\n\r\n isBetween(\r\n value: NgbDateStruct,\r\n start: NgbDateStruct,\r\n end: NgbDateStruct\r\n ): boolean {\r\n\r\n return (\r\n this.compare(value, start) >= 0 &&\r\n this.compare(value, end) <= 0\r\n );\r\n }\r\n}","import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { JalaliDate } from '../jalali';\r\nimport { CalendarAdapter } from './calendar-adapter';\r\n\r\nexport class JalaliCalendarAdapter\r\n implements CalendarAdapter {\r\n\r\n today(): NgbDateStruct {\r\n\r\n return JalaliDate.toNgbDateStruct(\r\n JalaliDate.today()\r\n );\r\n\r\n }\r\n\r\n isValid(\r\n year: number,\r\n month: number,\r\n day: number\r\n ): boolean {\r\n\r\n return JalaliDate.isValid(\r\n year,\r\n month,\r\n day\r\n );\r\n\r\n }\r\n\r\n daysInMonth(\r\n year: number,\r\n month: number\r\n ): number {\r\n\r\n return JalaliDate.daysInMonth(\r\n year,\r\n month\r\n );\r\n\r\n }\r\n\r\n dayOfWeek(\r\n year: number,\r\n month: number,\r\n day: number\r\n ): number {\r\n\r\n return JalaliDate.dayOfWeek(\r\n year,\r\n month,\r\n day\r\n );\r\n\r\n }\r\n\r\n monthName(\r\n month: number\r\n ): string {\r\n\r\n return JalaliDate.monthName(\r\n month\r\n );\r\n\r\n }\r\n\r\n weekdayName(\r\n day: number\r\n ): string {\r\n\r\n return JalaliDate.weekdayName(\r\n day\r\n );\r\n\r\n }\r\n\r\n compare(\r\n a: NgbDateStruct,\r\n b: NgbDateStruct\r\n ): number {\r\n\r\n return JalaliDate.compare(\r\n JalaliDate.fromNgbDateStruct(a),\r\n JalaliDate.fromNgbDateStruct(b)\r\n );\r\n\r\n }\r\n\r\n addDays(\r\n date: NgbDateStruct,\r\n days: number\r\n ): NgbDateStruct {\r\n\r\n return JalaliDate.toNgbDateStruct(\r\n JalaliDate.addDays(\r\n JalaliDate.fromNgbDateStruct(date),\r\n days\r\n )\r\n );\r\n }\r\n\r\n addMonths(\r\n date: NgbDateStruct,\r\n months: number\r\n ): NgbDateStruct {\r\n\r\n return JalaliDate.toNgbDateStruct(\r\n JalaliDate.addMonths(\r\n JalaliDate.fromNgbDateStruct(date),\r\n months\r\n )\r\n );\r\n }\r\n\r\n addYears(\r\n date: NgbDateStruct,\r\n years: number\r\n ): NgbDateStruct {\r\n\r\n return JalaliDate.toNgbDateStruct(\r\n JalaliDate.addYears(\r\n JalaliDate.fromNgbDateStruct(date),\r\n years\r\n )\r\n );\r\n }\r\n\r\n toDate(\r\n date: NgbDateStruct\r\n ): Date {\r\n\r\n return JalaliDate.toDate(\r\n JalaliDate.fromNgbDateStruct(date)\r\n );\r\n\r\n }\r\n\r\n fromDate(\r\n date: Date\r\n ): NgbDateStruct {\r\n\r\n return JalaliDate.toNgbDateStruct(\r\n JalaliDate.fromDate(date)\r\n );\r\n\r\n }\r\n\r\n parse(\r\n value: string\r\n ): NgbDateStruct | null {\r\n\r\n const result =\r\n JalaliDate.parse(value);\r\n\r\n return result\r\n ? JalaliDate.toNgbDateStruct(result)\r\n : null;\r\n }\r\n\r\n format(\r\n value: Date | string | number,\r\n format = 'yyyy/MM/dd'\r\n ): string {\r\n\r\n return JalaliDate.format(\r\n value,\r\n format\r\n );\r\n\r\n }\r\n\r\n isBetween(\r\n value: NgbDateStruct,\r\n start: NgbDateStruct,\r\n end: NgbDateStruct\r\n ): boolean {\r\n\r\n return JalaliDate.isBetween(\r\n JalaliDate.fromNgbDateStruct(value),\r\n JalaliDate.fromNgbDateStruct(start),\r\n JalaliDate.fromNgbDateStruct(end)\r\n );\r\n }\r\n}","import { CalendarType } from \"../types\";\r\nimport { CalendarAdapter } from \"./calendar-adapter\";\r\nimport { GregorianCalendarAdapter } from \"./gregorian-calendar-adapter\";\r\nimport { JalaliCalendarAdapter } from \"./jalali-calendar-adapter\";\r\n\r\nexport function createCalendarAdapter(type: CalendarType): CalendarAdapter {\r\n\r\n return type === 'jalali'\r\n ? new JalaliCalendarAdapter()\r\n : new GregorianCalendarAdapter();\r\n\r\n}","import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nexport function compareDates(a: NgbDateStruct, b: NgbDateStruct): number {\r\n\r\n if (a.year !== b.year) {\r\n return a.year - b.year;\r\n }\r\n\r\n if (a.month !== b.month) {\r\n return a.month - b.month;\r\n }\r\n\r\n return a.day - b.day;\r\n\r\n}\r\n\r\nexport function dateToStruct(date: Date): NgbDateStruct {\r\n\r\n return {\r\n year: date.getFullYear(),\r\n month: date.getMonth() + 1,\r\n day: date.getDate()\r\n };\r\n\r\n}\r\n\r\nexport function structToDate(date: NgbDateStruct): Date {\r\n\r\n return new Date(\r\n date.year,\r\n date.month - 1,\r\n date.day,\r\n 12, // noon\r\n 0,\r\n 0,\r\n 0\r\n );\r\n\r\n}","/*\r\n * Public API Surface of ys jalali date features\r\n */\r\n\r\nexport * from './src/adapters';\r\nexport * from './src/jalali';\r\nexport * from './src/models';\r\nexport * from './src/types';\r\nexport * from './src/utils';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}