@stemy/ngx-utils 19.9.39 → 19.9.41

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.
@@ -1,6 +1,6 @@
1
1
  import 'zone.js';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, runInInjectionContext, PLATFORM_ID, Inject, Injectable, Optional, inject, Injector, untracked, computed, signal, DestroyRef, isDevMode, ErrorHandler, EventEmitter, createComponent, NgZone, Pipe, input, output, ChangeDetectorRef, ElementRef, effect, HostListener, Directive, Input, HostBinding, Output, TemplateRef, ChangeDetectionStrategy, ViewEncapsulation, Component, ViewChild, forwardRef, ContentChild, contentChild, contentChildren, Renderer2, model, ContentChildren, provideAppInitializer, makeEnvironmentProviders, NgModule } from '@angular/core';
3
+ import { InjectionToken, runInInjectionContext, PLATFORM_ID, Inject, Injectable, Optional, inject, Injector, untracked, computed, signal, DestroyRef, isDevMode, ErrorHandler, EventEmitter, createComponent, NgZone, Pipe, input, output, ChangeDetectorRef, ElementRef, effect, HostListener, Directive, Input, HostBinding, Output, TemplateRef, ViewEncapsulation, Component, ChangeDetectionStrategy, model, ViewChild, forwardRef, ContentChild, contentChild, contentChildren, Renderer2, ContentChildren, provideAppInitializer, makeEnvironmentProviders, NgModule } from '@angular/core';
4
4
  import 'reflect-metadata';
5
5
  import * as i2 from '@angular/router';
6
6
  import { ActivatedRouteSnapshot, Scroll, NavigationEnd, UrlTree, Router, DefaultUrlSerializer, UrlSegmentGroup, UrlSegment, UrlSerializer, ROUTES } from '@angular/router';
@@ -1619,6 +1619,56 @@ function md5(input) {
1619
1619
  return out;
1620
1620
  }
1621
1621
 
1622
+ /**
1623
+ * Helper function that parses ISO string or Date object to a real Date object if its possible
1624
+ * @param value
1625
+ */
1626
+ function parseValidDate(value) {
1627
+ if (!value)
1628
+ return null;
1629
+ const date = value instanceof Date ? value : new Date(value);
1630
+ return isNaN(date.getTime()) ? null : date;
1631
+ }
1632
+ /**
1633
+ * Function that converts the provided date to midnight
1634
+ * @param value
1635
+ */
1636
+ function toMidnight(value) {
1637
+ value = value instanceof Date ? value : new Date();
1638
+ return new Date(value.getFullYear(), value.getMonth(), value.getDate(), 0, 0, 0);
1639
+ }
1640
+ /**
1641
+ * Compares two dates if they are on the same day
1642
+ * @param a
1643
+ * @param b
1644
+ */
1645
+ function isSameDay(a, b) {
1646
+ return toMidnight(a).getTime() === toMidnight(b).getTime();
1647
+ }
1648
+ /**
1649
+ * Gets the ISO week number of a specified date
1650
+ * @param date
1651
+ */
1652
+ function getISOWeekNumber(date) {
1653
+ const target = new Date(date.valueOf());
1654
+ const dayNr = (date.getDay() + 6) % 7;
1655
+ target.setDate(target.getDate() - dayNr + 3);
1656
+ const firstThursday = target.valueOf();
1657
+ target.setMonth(0, 1);
1658
+ if (target.getDay() !== 4) {
1659
+ target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
1660
+ }
1661
+ return 1 + Math.ceil((firstThursday - target.valueOf()) / 604800000);
1662
+ }
1663
+ /**
1664
+ * Adds an amount of units to the specified date
1665
+ * @param date
1666
+ * @param amount
1667
+ * @param unit
1668
+ */
1669
+ function addDate(date, amount = 1, unit = "days") {
1670
+ return DateTime.fromJSDate(date).plus({ [unit]: amount }).toJSDate();
1671
+ }
1622
1672
  class DateUtils {
1623
1673
  static isHoliday(date) {
1624
1674
  return DateTime.fromJSDate(date).isWeekend;
@@ -1627,7 +1677,7 @@ class DateUtils {
1627
1677
  return !DateUtils.isHoliday(date);
1628
1678
  }
1629
1679
  static add(date, amount = 1, unit = "days") {
1630
- return DateTime.fromJSDate(date).plus({ [unit]: amount }).toJSDate();
1680
+ return addDate(date, amount, unit);
1631
1681
  }
1632
1682
  static businessAdd(date, amount = 1, unit = "days", freeDays = []) {
1633
1683
  const signal = amount < 0 ? -1 : 1;
@@ -4456,6 +4506,469 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
4456
4506
  type: Injectable
4457
4507
  }], ctorParameters: () => [{ type: LocalHttpService }] });
4458
4508
 
4509
+ const CALENDAR_TRANSLATIONS = {
4510
+ en: {
4511
+ "month.jan": "January",
4512
+ "month.feb": "February",
4513
+ "month.mar": "March",
4514
+ "month.apr": "April",
4515
+ "month.may": "May",
4516
+ "month.jun": "June",
4517
+ "month.jul": "July",
4518
+ "month.aug": "August",
4519
+ "month.sep": "September",
4520
+ "month.oct": "October",
4521
+ "month.nov": "November",
4522
+ "month.dec": "December",
4523
+ "day.mon": "Mon",
4524
+ "day.tue": "Tue",
4525
+ "day.wed": "Wed",
4526
+ "day.thu": "Thu",
4527
+ "day.fri": "Fri",
4528
+ "day.sat": "Sat",
4529
+ "day.sun": "Sun"
4530
+ },
4531
+ de: {
4532
+ "month.jan": "Januar",
4533
+ "month.feb": "Februar",
4534
+ "month.mar": "März",
4535
+ "month.apr": "April",
4536
+ "month.may": "Mai",
4537
+ "month.jun": "Juni",
4538
+ "month.jul": "Juli",
4539
+ "month.aug": "August",
4540
+ "month.sep": "September",
4541
+ "month.oct": "Oktober",
4542
+ "month.nov": "November",
4543
+ "month.dec": "Dezember",
4544
+ "day.mon": "Mo",
4545
+ "day.tue": "Di",
4546
+ "day.wed": "Mi",
4547
+ "day.thu": "Do",
4548
+ "day.fri": "Fr",
4549
+ "day.sat": "Sa",
4550
+ "day.sun": "So"
4551
+ },
4552
+ hu: {
4553
+ "month.jan": "Január",
4554
+ "month.feb": "Február",
4555
+ "month.mar": "Március",
4556
+ "month.apr": "Április",
4557
+ "month.may": "Május",
4558
+ "month.jun": "Június",
4559
+ "month.jul": "Július",
4560
+ "month.aug": "Augusztus",
4561
+ "month.sep": "Szeptember",
4562
+ "month.oct": "Október",
4563
+ "month.nov": "November",
4564
+ "month.dec": "December",
4565
+ "day.mon": "Hét",
4566
+ "day.tue": "Kedd",
4567
+ "day.wed": "Sze",
4568
+ "day.thu": "Csüt",
4569
+ "day.fri": "Pén",
4570
+ "day.sat": "Szo",
4571
+ "day.sun": "Vas"
4572
+ },
4573
+ es: {
4574
+ "month.jan": "Enero",
4575
+ "month.feb": "Febrero",
4576
+ "month.mar": "Marzo",
4577
+ "month.apr": "Abril",
4578
+ "month.may": "Mayo",
4579
+ "month.jun": "Junio",
4580
+ "month.jul": "Julio",
4581
+ "month.aug": "Agosto",
4582
+ "month.sep": "Septiembre",
4583
+ "month.oct": "Octubre",
4584
+ "month.nov": "Noviembre",
4585
+ "month.dec": "Diciembre",
4586
+ "day.mon": "Lun",
4587
+ "day.tue": "Mar",
4588
+ "day.wed": "Mié",
4589
+ "day.thu": "Jue",
4590
+ "day.fri": "Vie",
4591
+ "day.sat": "Sáb",
4592
+ "day.sun": "Dom"
4593
+ },
4594
+ fr: {
4595
+ "month.jan": "Janvier",
4596
+ "month.feb": "Février",
4597
+ "month.mar": "Mars",
4598
+ "month.apr": "Avril",
4599
+ "month.may": "Mai",
4600
+ "month.jun": "Juin",
4601
+ "month.jul": "Juillet",
4602
+ "month.aug": "Août",
4603
+ "month.sep": "Septembre",
4604
+ "month.oct": "Octobre",
4605
+ "month.nov": "Novembre",
4606
+ "month.dec": "Décembre",
4607
+ "day.mon": "Lun",
4608
+ "day.tue": "Mar",
4609
+ "day.wed": "Mer",
4610
+ "day.thu": "Jeu",
4611
+ "day.fri": "Ven",
4612
+ "day.sat": "Sam",
4613
+ "day.sun": "Dim"
4614
+ },
4615
+ it: {
4616
+ "month.jan": "Gennaio",
4617
+ "month.feb": "Febbraio",
4618
+ "month.mar": "Marzo",
4619
+ "month.apr": "Aprile",
4620
+ "month.may": "Maggio",
4621
+ "month.jun": "Giugno",
4622
+ "month.jul": "Luglio",
4623
+ "month.aug": "Agosto",
4624
+ "month.sep": "Settembre",
4625
+ "month.oct": "Ottobre",
4626
+ "month.nov": "Novembre",
4627
+ "month.dec": "Dicembre",
4628
+ "day.mon": "Lun",
4629
+ "day.tue": "Mar",
4630
+ "day.wed": "Mer",
4631
+ "day.thu": "Gio",
4632
+ "day.fri": "Ven",
4633
+ "day.sat": "Sab",
4634
+ "day.sun": "Dom"
4635
+ },
4636
+ pt: {
4637
+ "month.jan": "Janeiro",
4638
+ "month.feb": "Fevereiro",
4639
+ "month.mar": "Março",
4640
+ "month.apr": "Abril",
4641
+ "month.may": "Maio",
4642
+ "month.jun": "Junho",
4643
+ "month.jul": "Julho",
4644
+ "month.aug": "Agosto",
4645
+ "month.sep": "Setembro",
4646
+ "month.oct": "Outubro",
4647
+ "month.nov": "Novembro",
4648
+ "month.dec": "Dezembro",
4649
+ "day.mon": "Seg",
4650
+ "day.tue": "Ter",
4651
+ "day.wed": "Qua",
4652
+ "day.thu": "Qui",
4653
+ "day.fri": "Sex",
4654
+ "day.sat": "Sáb",
4655
+ "day.sun": "Dom"
4656
+ },
4657
+ zh: {
4658
+ "month.jan": "一月",
4659
+ "month.feb": "二月",
4660
+ "month.mar": "三月",
4661
+ "month.apr": "四月",
4662
+ "month.may": "五月",
4663
+ "month.jun": "六月",
4664
+ "month.jul": "七月",
4665
+ "month.aug": "八月",
4666
+ "month.sep": "九月",
4667
+ "month.oct": "十月",
4668
+ "month.nov": "十一月",
4669
+ "month.dec": "十二月",
4670
+ "day.mon": "一",
4671
+ "day.tue": "二",
4672
+ "day.wed": "三",
4673
+ "day.thu": "四",
4674
+ "day.fri": "五",
4675
+ "day.sat": "六",
4676
+ "day.sun": "日"
4677
+ },
4678
+ ja: {
4679
+ "month.jan": "1月",
4680
+ "month.feb": "2月",
4681
+ "month.mar": "3月",
4682
+ "month.apr": "4月",
4683
+ "month.may": "5月",
4684
+ "month.jun": "6月",
4685
+ "month.jul": "7月",
4686
+ "month.aug": "8月",
4687
+ "month.sep": "9月",
4688
+ "month.oct": "10月",
4689
+ "month.nov": "11月",
4690
+ "month.dec": "12月",
4691
+ "day.mon": "月",
4692
+ "day.tue": "火",
4693
+ "day.wed": "水",
4694
+ "day.thu": "木",
4695
+ "day.fri": "金",
4696
+ "day.sat": "土",
4697
+ "day.sun": "日"
4698
+ },
4699
+ pl: {
4700
+ "month.jan": "Styczeń",
4701
+ "month.feb": "Luty",
4702
+ "month.mar": "Marzec",
4703
+ "month.apr": "Kwiecień",
4704
+ "month.may": "Maj",
4705
+ "month.jun": "Czerwiec",
4706
+ "month.jul": "Lipiec",
4707
+ "month.aug": "Sierpień",
4708
+ "month.sep": "Wrzesień",
4709
+ "month.oct": "Październik",
4710
+ "month.nov": "Listopad",
4711
+ "month.dec": "Grudzień",
4712
+ "day.mon": "Pn",
4713
+ "day.tue": "Wt",
4714
+ "day.wed": "Śr",
4715
+ "day.thu": "Cz",
4716
+ "day.fri": "Pt",
4717
+ "day.sat": "Sb",
4718
+ "day.sun": "Nd"
4719
+ },
4720
+ cs: {
4721
+ "month.jan": "Leden",
4722
+ "month.feb": "Únor",
4723
+ "month.mar": "Březen",
4724
+ "month.apr": "Duben",
4725
+ "month.may": "Květen",
4726
+ "month.jun": "Červen",
4727
+ "month.jul": "Červenec",
4728
+ "month.aug": "Srpen",
4729
+ "month.sep": "Září",
4730
+ "month.oct": "Říjen",
4731
+ "month.nov": "Listopad",
4732
+ "month.dec": "Prosinec",
4733
+ "day.mon": "Po",
4734
+ "day.tue": "Út",
4735
+ "day.wed": "St",
4736
+ "day.thu": "Čt",
4737
+ "day.fri": "Pá",
4738
+ "day.sat": "So",
4739
+ "day.sun": "Ne"
4740
+ },
4741
+ lt: {
4742
+ "month.jan": "Sausis",
4743
+ "month.feb": "Vasaris",
4744
+ "month.mar": "Kovas",
4745
+ "month.apr": "Balandis",
4746
+ "month.may": "Gegužė",
4747
+ "month.jun": "Birželis",
4748
+ "month.jul": "Liepa",
4749
+ "month.aug": "Rugpjūtis",
4750
+ "month.sep": "Rugsėjis",
4751
+ "month.oct": "Spalis",
4752
+ "month.nov": "Lapkritis",
4753
+ "month.dec": "Gruodis",
4754
+ "day.mon": "Pr",
4755
+ "day.tue": "An",
4756
+ "day.wed": "Tre",
4757
+ "day.thu": "Ket",
4758
+ "day.fri": "Pen",
4759
+ "day.sat": "Še",
4760
+ "day.sun": "Se"
4761
+ },
4762
+ sk: {
4763
+ "month.jan": "Januar",
4764
+ "month.feb": "Februar",
4765
+ "month.mar": "Marec",
4766
+ "month.apr": "Apríl",
4767
+ "month.may": "Maj",
4768
+ "month.jun": "Junij",
4769
+ "month.jul": "Julij",
4770
+ "month.aug": "August",
4771
+ "month.sep": "September",
4772
+ "month.oct": "Oktober",
4773
+ "month.nov": "November",
4774
+ "month.dec": "December",
4775
+ "day.mon": "Po",
4776
+ "day.tue": "Ut",
4777
+ "day.wed": "St",
4778
+ "day.thu": "Št",
4779
+ "day.fri": "Pi",
4780
+ "day.sat": "So",
4781
+ "day.sun": "Ne"
4782
+ }
4783
+ };
4784
+
4785
+ const LANG_TRANSLATIONS = {
4786
+ "lang.aa": "Afar",
4787
+ "lang.ab": "Аҧсшәа",
4788
+ "lang.ae": "Avesta",
4789
+ "lang.af": "Afrikaans",
4790
+ "lang.ak": "Akan",
4791
+ "lang.am": "አማርኛ",
4792
+ "lang.an": "Aragonés",
4793
+ "lang.ar": "العربية",
4794
+ "lang.as": "অসমীয়া",
4795
+ "lang.av": "Авар мацӀ",
4796
+ "lang.ay": "Aymar aru",
4797
+ "lang.az": "Azərbaycanca",
4798
+ "lang.ba": "Башҡортса",
4799
+ "lang.be": "Беларуская",
4800
+ "lang.bg": "Български",
4801
+ "lang.bh": "भोजपुरी",
4802
+ "lang.bi": "Bislama",
4803
+ "lang.bm": "Bamanankan",
4804
+ "lang.bn": "বাংলা",
4805
+ "lang.bo": "Bod skad",
4806
+ "lang.br": "Brezhoneg",
4807
+ "lang.bs": "Bosanski",
4808
+ "lang.ca": "Català",
4809
+ "lang.ce": "Нохчийн",
4810
+ "lang.ch": "Chamoru",
4811
+ "lang.co": "Corsu",
4812
+ "lang.cr": "Nēhiyawēwin",
4813
+ "lang.cs": "Čeština",
4814
+ "lang.cu": "Slavenskъ",
4815
+ "lang.cv": "Чӑвашла",
4816
+ "lang.cy": "Cymraeg",
4817
+ "lang.da": "Dansk",
4818
+ "lang.de": "Deutsch",
4819
+ "lang.dv": "ދިވެހިބަސް",
4820
+ "lang.dz": "རྫོང་ཁ",
4821
+ "lang.ee": "Eʋegbe",
4822
+ "lang.el": "Ελληνικά",
4823
+ "lang.en": "English",
4824
+ "lang.eo": "Esperanto",
4825
+ "lang.es": "Español",
4826
+ "lang.et": "Eesti",
4827
+ "lang.eu": "Euskara",
4828
+ "lang.fa": "فارسی",
4829
+ "lang.ff": "Fulfulde",
4830
+ "lang.fi": "Suomi",
4831
+ "lang.fj": "Na Vosa Vakaviti",
4832
+ "lang.fo": "Føroyskt",
4833
+ "lang.fr": "Français",
4834
+ "lang.fy": "Frysk",
4835
+ "lang.ga": "Gaeilge",
4836
+ "lang.gd": "Gàidhlig",
4837
+ "lang.gl": "Galego",
4838
+ "lang.gn": "Avañe'ẽ",
4839
+ "lang.gu": "ગુજરાતી",
4840
+ "lang.gv": "Gaelg",
4841
+ "lang.ha": "Hausa",
4842
+ "lang.he": "עברית",
4843
+ "lang.hi": "हिन्दी",
4844
+ "lang.ho": "Hiri Motu",
4845
+ "lang.hr": "Hrvatski",
4846
+ "lang.ht": "Kreyòl ayisyen",
4847
+ "lang.hu": "Magyar",
4848
+ "lang.hy": "Հայերեն",
4849
+ "lang.hz": "Otjiherero",
4850
+ "lang.ia": "Interlingua",
4851
+ "lang.id": "Bahasa Indonesia",
4852
+ "lang.ie": "Interlingue",
4853
+ "lang.ig": "Asụsụ Igbo",
4854
+ "lang.ii": "Nuosuhxop",
4855
+ "lang.ik": "Iñupiaq",
4856
+ "lang.io": "Ido",
4857
+ "lang.is": "Íslenska",
4858
+ "lang.it": "Italiano",
4859
+ "lang.iu": "Inuktitut",
4860
+ "lang.ja": "日本語",
4861
+ "lang.jv": "Basa Jawa",
4862
+ "lang.ka": "ქართული",
4863
+ "lang.kg": "Kikongo",
4864
+ "lang.ki": "Gikuyu",
4865
+ "lang.kj": "Kuanyama",
4866
+ "lang.kk": "Қазақ тілі",
4867
+ "lang.kl": "Kalaallisut",
4868
+ "lang.km": "ភាសាខ្មែរ",
4869
+ "lang.kn": "ಕನ್ನಡ",
4870
+ "lang.ko": "한국어",
4871
+ "lang.kr": "Kanuri",
4872
+ "lang.ks": "कश्मीरी",
4873
+ "lang.ku": "Kurdî",
4874
+ "lang.kv": "Коми",
4875
+ "lang.kw": "Kernewek",
4876
+ "lang.ky": "Кыргызча",
4877
+ "lang.la": "Latine",
4878
+ "lang.lb": "Lëtzebuergesch",
4879
+ "lang.lg": "Luganda",
4880
+ "lang.li": "Limburgs",
4881
+ "lang.ln": "Lingála",
4882
+ "lang.lo": "ພາສາລາວ",
4883
+ "lang.lt": "Lietuvių",
4884
+ "lang.lu": "Tshiluba",
4885
+ "lang.lv": "Latviešu",
4886
+ "lang.mg": "Malagasy",
4887
+ "lang.mh": "Kajin M̧ajeļ",
4888
+ "lang.mi": "Te Reo Māori",
4889
+ "lang.mk": "Makedonski",
4890
+ "lang.ml": "മലയാളം",
4891
+ "lang.mn": "Монгол хэл",
4892
+ "lang.mr": "मराठी",
4893
+ "lang.ms": "Bahasa Melayu",
4894
+ "lang.mt": "Malti",
4895
+ "lang.my": "မြန်မာစာ",
4896
+ "lang.na": "Dorerin Naoero",
4897
+ "lang.nb": "Norsk bokmål",
4898
+ "lang.nd": "isiNdebele",
4899
+ "lang.ne": "नेपाली",
4900
+ "lang.ng": "Oshiwambo",
4901
+ "lang.nl": "Nederlands",
4902
+ "lang.nn": "Norsk nynorsk",
4903
+ "lang.no": "Norsk",
4904
+ "lang.nr": "isiNdebele",
4905
+ "lang.nv": "Diné bizaad",
4906
+ "lang.ny": "Chichewa",
4907
+ "lang.oc": "Occitan",
4908
+ "lang.oj": "Anishinaabemowin",
4909
+ "lang.om": "Oromoo",
4910
+ "lang.or": "ଓଡ଼ିଆ",
4911
+ "lang.os": "Ирон",
4912
+ "lang.pa": "ਪੰਜਾਬੀ",
4913
+ "lang.pi": "Pāḷi",
4914
+ "lang.pl": "Polski",
4915
+ "lang.ps": "پښتو",
4916
+ "lang.pt": "Português",
4917
+ "lang.qu": "Runa Simi",
4918
+ "lang.rm": "Rumantsch",
4919
+ "lang.rn": "Kirundi",
4920
+ "lang.ro": "Română",
4921
+ "lang.ru": "Русский",
4922
+ "lang.rw": "Kinyarwanda",
4923
+ "lang.sa": "संस्कृतम्",
4924
+ "lang.sc": "Sardu",
4925
+ "lang.sd": "سنڌي",
4926
+ "lang.se": "Davvisámegiella",
4927
+ "lang.sg": "Sängö",
4928
+ "lang.si": "සිංහල",
4929
+ "lang.sk": "Slovenčina",
4930
+ "lang.sl": "Slovenščina",
4931
+ "lang.sm": "Gagana Samoa",
4932
+ "lang.sn": "chiShona",
4933
+ "lang.so": "Soomaaliga",
4934
+ "lang.sq": "Shqip",
4935
+ "lang.sr": "Српски",
4936
+ "lang.ss": "SiSwati",
4937
+ "lang.st": "Sesotho",
4938
+ "lang.su": "Basa Sunda",
4939
+ "lang.sv": "Svenska",
4940
+ "lang.sw": "Kiswahili",
4941
+ "lang.ta": "தமிழ்",
4942
+ "lang.te": "தெலுங்கு",
4943
+ "lang.tg": "Тоҷикӣ",
4944
+ "lang.th": "ไทย",
4945
+ "lang.ti": "ትግርኛ",
4946
+ "lang.tk": "Türkmençe",
4947
+ "lang.tl": "Tagalog",
4948
+ "lang.tn": "Setswana",
4949
+ "lang.to": "Faka Tonga",
4950
+ "lang.tr": "Türkçe",
4951
+ "lang.ts": "Xitsonga",
4952
+ "lang.tt": "Татарча",
4953
+ "lang.tw": "Twi",
4954
+ "lang.ty": "Reo Tahiti",
4955
+ "lang.ug": "ئۇيغۇرچە",
4956
+ "lang.uk": "Українська",
4957
+ "lang.ur": "اردو",
4958
+ "lang.uz": "Oʻzbekcha",
4959
+ "lang.ve": "Tshivenda",
4960
+ "lang.vi": "Tiếng Việt",
4961
+ "lang.vo": "Volapük",
4962
+ "lang.wa": "Walon",
4963
+ "lang.wo": "Wolof",
4964
+ "lang.xh": "isiXhosa",
4965
+ "lang.yi": "ייִדיש",
4966
+ "lang.yo": "Yorùbá",
4967
+ "lang.za": "Vahcuengh",
4968
+ "lang.zh": "中文",
4969
+ "lang.zu": "isiZulu"
4970
+ };
4971
+
4459
4972
  const EMPTY_DICT = {};
4460
4973
  class StaticLanguageService {
4461
4974
  get defaultLanguage() {
@@ -4475,8 +4988,8 @@ class StaticLanguageService {
4475
4988
  return this.currentLang || this.defaultLanguage;
4476
4989
  }
4477
4990
  set currentLanguage(lang) {
4478
- this.currentLang = lang;
4479
- this.events.languageChanged.next(lang);
4991
+ this.currentLang = this.selectLanguage(lang) || this.languageList[0];
4992
+ this.events.languageChanged.next(this.currentLang);
4480
4993
  }
4481
4994
  get editLanguage() {
4482
4995
  return this.editLang || this.currentLanguage;
@@ -4526,6 +5039,12 @@ class StaticLanguageService {
4526
5039
  this.mergedTranslations = this.translations;
4527
5040
  this.initService();
4528
5041
  }
5042
+ selectLanguage(lang) {
5043
+ if (!lang)
5044
+ return null;
5045
+ return this.languageList.length === 0 || this.languageList.includes(lang)
5046
+ ? lang : null;
5047
+ }
4529
5048
  initService() {
4530
5049
  }
4531
5050
  replaceLanguages(languages) {
@@ -4534,6 +5053,7 @@ class StaticLanguageService {
4534
5053
  this.languageList.forEach(lang => {
4535
5054
  this.translations[lang] = this.translations[lang] || EMPTY_DICT;
4536
5055
  });
5056
+ this.mergeTranslations();
4537
5057
  }
4538
5058
  addLanguages(languages) {
4539
5059
  if (!Array.isArray(languages) || languages.length == 0)
@@ -4547,7 +5067,7 @@ class StaticLanguageService {
4547
5067
  return;
4548
5068
  }
4549
5069
  this.overrideTranslations = {};
4550
- this.mergedTranslations = this.translations;
5070
+ this.mergeTranslations();
4551
5071
  }
4552
5072
  getTranslationSync(key, params = null) {
4553
5073
  key = String(key ?? "");
@@ -4590,7 +5110,7 @@ class StaticLanguageService {
4590
5110
  return this.interpolate(translation ? translation.translation : "", params);
4591
5111
  }
4592
5112
  async loadDictionary() {
4593
- return this.dictionary;
5113
+ return this.translations[this.currentLanguage] || EMPTY_DICT;
4594
5114
  }
4595
5115
  setDictionary(lang, dictionary) {
4596
5116
  this.translations[lang] = Object.keys(dictionary || {}).reduce((res, key) => {
@@ -4634,13 +5154,17 @@ class StaticLanguageService {
4634
5154
  }
4635
5155
  mergeTranslations() {
4636
5156
  const languages = new Set([
5157
+ ...this.languageList,
4637
5158
  ...Object.keys(this.translations),
4638
- ...Object.keys(this.overrideTranslations)
5159
+ ...Object.keys(this.overrideTranslations),
5160
+ ...Object.keys(CALENDAR_TRANSLATIONS),
4639
5161
  ]);
4640
5162
  this.mergedTranslations = Array.from(languages).reduce((merged, language) => {
4641
5163
  merged[language] = {
4642
5164
  ...(this.translations[language] || EMPTY_DICT),
4643
5165
  ...(this.overrideTranslations[language] || EMPTY_DICT),
5166
+ ...(CALENDAR_TRANSLATIONS[language] || CALENDAR_TRANSLATIONS.en),
5167
+ ...LANG_TRANSLATIONS
4644
5168
  };
4645
5169
  return merged;
4646
5170
  }, {});
@@ -4722,12 +5246,6 @@ class LanguageService extends StaticLanguageService {
4722
5246
  await this.useLanguage(lang);
4723
5247
  this.events.languageChanged.next(lang);
4724
5248
  }
4725
- selectLanguage(lang) {
4726
- if (!lang)
4727
- return null;
4728
- return this.languageList.length === 0 || this.languageList.includes(lang)
4729
- ? lang : null;
4730
- }
4731
5249
  async useLanguage(lang) {
4732
5250
  lang = this.selectLanguage(lang);
4733
5251
  this.client.setParam("language", lang);
@@ -7532,11 +8050,11 @@ class BtnComponent {
7532
8050
  return !(target instanceof HTMLElement) || this.element.nativeElement?.contains(target);
7533
8051
  }
7534
8052
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: BtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7535
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.22", type: BtnComponent, isStandalone: false, selector: "btn", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: "path", publicName: "path", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container [ngComponentOutlet]=\"buttonType\"\r\n [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\r\n", dependencies: [{ kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8053
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.22", type: BtnComponent, isStandalone: false, selector: "btn", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: "path", publicName: "path", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container [ngComponentOutlet]=\"buttonType\"\r\n [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\r\n", dependencies: [{ kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }], encapsulation: i0.ViewEncapsulation.None }); }
7536
8054
  }
7537
8055
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: BtnComponent, decorators: [{
7538
8056
  type: Component,
7539
- args: [{ standalone: false, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: "btn", template: "<ng-container [ngComponentOutlet]=\"buttonType\"\r\n [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\r\n" }]
8057
+ args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "btn", template: "<ng-container [ngComponentOutlet]=\"buttonType\"\r\n [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\r\n" }]
7540
8058
  }] });
7541
8059
 
7542
8060
  class IconComponent {
@@ -7585,6 +8103,436 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
7585
8103
  type: Input
7586
8104
  }] } });
7587
8105
 
8106
+ class CalendarComponent {
8107
+ constructor() {
8108
+ this.months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
8109
+ this.daysOfWeek = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
8110
+ this.value = model(null);
8111
+ this.min = input(null);
8112
+ this.max = input(null);
8113
+ this.disabledDates = input([]);
8114
+ this.disabledDays = input([]);
8115
+ this.currentMonth = signal(new Date().getMonth());
8116
+ this.currentYear = signal(new Date().getFullYear());
8117
+ this.isDragging = signal(false);
8118
+ this.dragStartCellDate = signal(null);
8119
+ this.dragCurrentCellDate = signal(null);
8120
+ this.initialSelectedStateBeforeDrag = signal(new Map());
8121
+ this.dragTargetState = signal(true);
8122
+ this.isInitialized = false;
8123
+ this.minDate = computed(() => parseValidDate(this.min()));
8124
+ this.maxDate = computed(() => parseValidDate(this.max()));
8125
+ this.disabledTimestamps = computed(() => {
8126
+ return (this.disabledDates() || [])
8127
+ .map(d => parseValidDate(d))
8128
+ .filter((d) => d !== null)
8129
+ .map(d => toMidnight(d).getTime());
8130
+ });
8131
+ this.isMultiSelect = computed(() => Array.isArray(this.value()));
8132
+ // Common Day Validator mapping strategy shared across computed environments
8133
+ this.isDayOfWeekDisabledFn = computed(() => {
8134
+ const disDays = this.disabledDays();
8135
+ return (jsDay) => disDays.some(d => (d === 7 ? 0 : d) === jsDay);
8136
+ });
8137
+ this.validatedValue = computed(() => {
8138
+ const val = this.value();
8139
+ const min = this.minDate();
8140
+ const max = this.maxDate();
8141
+ const disabledTimes = this.disabledTimestamps();
8142
+ const isDayOfWeekDisabled = this.isDayOfWeekDisabledFn();
8143
+ const checkInvalid = (d) => {
8144
+ const midnight = toMidnight(d);
8145
+ if (min && midnight < toMidnight(min))
8146
+ return true;
8147
+ if (max && midnight > toMidnight(max))
8148
+ return true;
8149
+ if (disabledTimes.includes(midnight.getTime()))
8150
+ return true;
8151
+ return isDayOfWeekDisabled(midnight.getDay());
8152
+ };
8153
+ if (Array.isArray(val)) {
8154
+ return val.filter(d => d instanceof Date && !isNaN(d.getTime()) && !checkInvalid(d));
8155
+ }
8156
+ else if (val instanceof Date && !isNaN(val.getTime())) {
8157
+ if (checkInvalid(val)) {
8158
+ return this.findClosestValidDate(val, min, max, disabledTimes, isDayOfWeekDisabled);
8159
+ }
8160
+ return val;
8161
+ }
8162
+ return null;
8163
+ });
8164
+ // --- Computed Navigation States ---
8165
+ this.canGoPrev = computed(() => {
8166
+ const min = this.minDate();
8167
+ if (!min)
8168
+ return true;
8169
+ // Start checking from the month immediately preceding our current view context
8170
+ let testMonth = this.currentMonth() - 1;
8171
+ let testYear = this.currentYear();
8172
+ if (testMonth === -1) {
8173
+ testMonth = 11;
8174
+ testYear--;
8175
+ }
8176
+ const minMidnight = toMidnight(min);
8177
+ // Quick exit if the target month falls completely out of bounding limits
8178
+ const lastDayOfTestMonth = new Date(testYear, testMonth + 1, 0);
8179
+ if (lastDayOfTestMonth < minMidnight)
8180
+ return false;
8181
+ // Perform a deeper scan backwards to see if any valid slot remains reachable
8182
+ while (lastDayOfTestMonth >= minMidnight) {
8183
+ if (this.isMonthAvailable(testYear, testMonth)) {
8184
+ return true;
8185
+ }
8186
+ testMonth--;
8187
+ if (testMonth === -1) {
8188
+ testMonth = 11;
8189
+ testYear--;
8190
+ }
8191
+ lastDayOfTestMonth.setFullYear(testYear, testMonth + 1, 0);
8192
+ }
8193
+ return false;
8194
+ });
8195
+ this.canGoNext = computed(() => {
8196
+ const max = this.maxDate();
8197
+ if (!max)
8198
+ return true;
8199
+ let testMonth = this.currentMonth() + 1;
8200
+ let testYear = this.currentYear();
8201
+ if (testMonth === 12) {
8202
+ testMonth = 0;
8203
+ testYear++;
8204
+ }
8205
+ const maxMidnight = toMidnight(max);
8206
+ const firstDayOfTestMonth = new Date(testYear, testMonth, 1);
8207
+ if (firstDayOfTestMonth > maxMidnight)
8208
+ return false;
8209
+ while (firstDayOfTestMonth <= maxMidnight) {
8210
+ if (this.isMonthAvailable(testYear, testMonth)) {
8211
+ return true;
8212
+ }
8213
+ testMonth++;
8214
+ if (testMonth === 12) {
8215
+ testMonth = 0;
8216
+ testYear++;
8217
+ }
8218
+ firstDayOfTestMonth.setFullYear(testYear, testMonth, 1);
8219
+ }
8220
+ return false;
8221
+ });
8222
+ this.calendarCells = computed(() => {
8223
+ const year = this.currentYear();
8224
+ const month = this.currentMonth();
8225
+ const firstDayOfMonth = new Date(year, month, 1);
8226
+ let startOffset = firstDayOfMonth.getDay() - 1;
8227
+ if (startOffset === -1)
8228
+ startOffset = 6;
8229
+ if (startOffset === 0)
8230
+ startOffset = 7;
8231
+ const gridStartDate = new Date(year, month, 1 - startOffset);
8232
+ const rawCells = [];
8233
+ const min = this.minDate();
8234
+ const max = this.maxDate();
8235
+ const disabledTimes = this.disabledTimestamps();
8236
+ const isDayOfWeekDisabled = this.isDayOfWeekDisabledFn();
8237
+ const currentValue = this.validatedValue();
8238
+ const startDrag = this.dragStartCellDate();
8239
+ const currentDrag = this.dragCurrentCellDate();
8240
+ const dragging = this.isDragging();
8241
+ const dragSnapshot = this.initialSelectedStateBeforeDrag();
8242
+ const targetState = this.dragTargetState();
8243
+ const multiSelectMode = this.isMultiSelect();
8244
+ let dragMinT = Infinity;
8245
+ let dragMaxT = -Infinity;
8246
+ const currentDragT = currentDrag ? toMidnight(currentDrag).getTime() : null;
8247
+ if (multiSelectMode && dragging && startDrag && currentDrag) {
8248
+ const startT = toMidnight(startDrag).getTime();
8249
+ const endT = toMidnight(currentDrag).getTime();
8250
+ dragMinT = Math.min(startT, endT);
8251
+ dragMaxT = Math.max(startT, endT);
8252
+ }
8253
+ const prevMonthLastDayT = toMidnight(new Date(year, month, 0)).getTime();
8254
+ const nextMonthFirstDayT = toMidnight(new Date(year, month + 1, 1)).getTime();
8255
+ for (let row = 0; row < 6; row++) {
8256
+ const firstDateOfRow = new Date(gridStartDate.getFullYear(), gridStartDate.getMonth(), gridStartDate.getDate() + (row * 7));
8257
+ rawCells.push({
8258
+ id: `week-${row}-${firstDateOfRow.getTime()}`,
8259
+ date: null, isCurrentMonth: false, isDisabled: true, isSelected: false, isInDragRange: false,
8260
+ isWeekNum: true, weekNumber: getISOWeekNumber(firstDateOfRow), isRangeStart: false, isRangeEnd: false,
8261
+ isFillerStart: false, isFillerEnd: false
8262
+ });
8263
+ for (let col = 0; col < 7; col++) {
8264
+ const cellDate = new Date(firstDateOfRow.getFullYear(), firstDateOfRow.getMonth(), firstDateOfRow.getDate() + col);
8265
+ const cellMidnight = toMidnight(cellDate);
8266
+ const timestamp = cellMidnight.getTime();
8267
+ let isDisabled = false;
8268
+ if (min && cellMidnight < toMidnight(min))
8269
+ isDisabled = true;
8270
+ if (max && cellMidnight > toMidnight(max))
8271
+ isDisabled = true;
8272
+ if (disabledTimes.includes(timestamp))
8273
+ isDisabled = true;
8274
+ if (isDayOfWeekDisabled(cellMidnight.getDay()))
8275
+ isDisabled = true;
8276
+ let isSelected = false;
8277
+ if (!multiSelectMode) {
8278
+ isSelected = currentValue instanceof Date && isSameDay(currentValue, cellMidnight);
8279
+ }
8280
+ else if (Array.isArray(currentValue)) {
8281
+ isSelected = currentValue.some(d => isSameDay(d, cellMidnight));
8282
+ }
8283
+ let isInDragRange = false;
8284
+ let isRangeStart = false;
8285
+ let isRangeEnd = false;
8286
+ if (dragging) {
8287
+ if (multiSelectMode && startDrag && currentDrag) {
8288
+ if (timestamp >= dragMinT && timestamp <= dragMaxT) {
8289
+ isInDragRange = true;
8290
+ if (!isDisabled)
8291
+ isSelected = targetState;
8292
+ if (timestamp === dragMinT)
8293
+ isRangeStart = true;
8294
+ if (timestamp === dragMaxT)
8295
+ isRangeEnd = true;
8296
+ }
8297
+ else {
8298
+ isSelected = dragSnapshot.get(timestamp) || false;
8299
+ }
8300
+ }
8301
+ else if (!multiSelectMode && currentDragT !== null && timestamp === currentDragT) {
8302
+ isInDragRange = true;
8303
+ if (!isDisabled)
8304
+ isSelected = true;
8305
+ isRangeStart = true;
8306
+ isRangeEnd = true;
8307
+ }
8308
+ }
8309
+ rawCells.push({
8310
+ id: String(timestamp), date: cellDate, isCurrentMonth: cellDate.getMonth() === month,
8311
+ isDisabled, isSelected, isInDragRange, isWeekNum: false, weekNumber: null,
8312
+ isRangeStart, isRangeEnd,
8313
+ isFillerStart: timestamp === nextMonthFirstDayT,
8314
+ isFillerEnd: timestamp === prevMonthLastDayT
8315
+ });
8316
+ }
8317
+ }
8318
+ return rawCells;
8319
+ });
8320
+ effect(() => {
8321
+ const val = this.validatedValue();
8322
+ if (val && !this.isInitialized) {
8323
+ untracked(() => {
8324
+ let referenceDate = null;
8325
+ if (Array.isArray(val) && val.length > 0) {
8326
+ referenceDate = new Date(Math.max(...val.map(d => d.getTime())));
8327
+ }
8328
+ else if (val instanceof Date) {
8329
+ referenceDate = val;
8330
+ }
8331
+ if (referenceDate && !isNaN(referenceDate.getTime())) {
8332
+ this.currentMonth.set(referenceDate.getMonth());
8333
+ this.currentYear.set(referenceDate.getFullYear());
8334
+ this.isInitialized = true;
8335
+ }
8336
+ });
8337
+ }
8338
+ });
8339
+ }
8340
+ // --- Dynamic Month Verification Engine ---
8341
+ isMonthAvailable(year, month) {
8342
+ const min = this.minDate();
8343
+ const max = this.maxDate();
8344
+ const disabledTimes = this.disabledTimestamps();
8345
+ const isDayOfWeekDisabled = this.isDayOfWeekDisabledFn();
8346
+ const loopDate = new Date(year, month, 1);
8347
+ const minMidnight = min ? toMidnight(min).getTime() : -Infinity;
8348
+ const maxMidnight = max ? toMidnight(max).getTime() : Infinity;
8349
+ // March day-by-day through the target month to see if at least one day is selectable
8350
+ while (loopDate.getMonth() === month) {
8351
+ const currentMidnight = toMidnight(loopDate);
8352
+ const currentT = currentMidnight.getTime();
8353
+ if (currentT >= minMidnight && currentT <= maxMidnight) {
8354
+ if (!disabledTimes.includes(currentT) && !isDayOfWeekDisabled(currentMidnight.getDay())) {
8355
+ return true; // Found a valid date slot
8356
+ }
8357
+ }
8358
+ loopDate.setDate(loopDate.getDate() + 1);
8359
+ }
8360
+ return false;
8361
+ }
8362
+ // --- Smart Navigation Control Blocks ---
8363
+ prevMonth() {
8364
+ if (!this.canGoPrev())
8365
+ return;
8366
+ let targetMonth = this.currentMonth() - 1;
8367
+ let targetYear = this.currentYear();
8368
+ if (targetMonth === -1) {
8369
+ targetMonth = 11;
8370
+ targetYear--;
8371
+ }
8372
+ // Leapfrog loop to bypass entirely disabled months
8373
+ while (!this.isMonthAvailable(targetYear, targetMonth)) {
8374
+ targetMonth--;
8375
+ if (targetMonth === -1) {
8376
+ targetMonth = 11;
8377
+ targetYear--;
8378
+ }
8379
+ }
8380
+ this.currentMonth.set(targetMonth);
8381
+ this.currentYear.set(targetYear);
8382
+ }
8383
+ nextMonth() {
8384
+ if (!this.canGoNext())
8385
+ return;
8386
+ let targetMonth = this.currentMonth() + 1;
8387
+ let targetYear = this.currentYear();
8388
+ if (targetMonth === 12) {
8389
+ targetMonth = 0;
8390
+ targetYear++;
8391
+ }
8392
+ // Leapfrog loop to bypass entirely disabled months
8393
+ while (!this.isMonthAvailable(targetYear, targetMonth)) {
8394
+ targetMonth++;
8395
+ if (targetMonth === 12) {
8396
+ targetMonth = 0;
8397
+ targetYear++;
8398
+ }
8399
+ }
8400
+ this.currentMonth.set(targetMonth);
8401
+ this.currentYear.set(targetYear);
8402
+ }
8403
+ onMouseDown(cell, event) {
8404
+ if (cell.isWeekNum || cell.isDisabled || !cell.date)
8405
+ return;
8406
+ this.dragStartCellDate.set(cell.date);
8407
+ this.dragCurrentCellDate.set(cell.date);
8408
+ this.isDragging.set(true);
8409
+ const snapshotMap = new Map();
8410
+ if (!this.isMultiSelect()) {
8411
+ this.dragTargetState.set(true);
8412
+ }
8413
+ else {
8414
+ this.dragTargetState.set(!cell.isSelected);
8415
+ (this.validatedValue() || []).forEach(d => {
8416
+ snapshotMap.set(toMidnight(d).getTime(), true);
8417
+ });
8418
+ }
8419
+ this.initialSelectedStateBeforeDrag.set(snapshotMap);
8420
+ }
8421
+ onMouseEnter(cell) {
8422
+ if (!this.isDragging() || cell.isWeekNum)
8423
+ return;
8424
+ this.dragCurrentCellDate.set(cell.date);
8425
+ }
8426
+ onGridMouseLeave() { }
8427
+ onMouseUpGlobal() {
8428
+ if (!this.isDragging())
8429
+ return;
8430
+ untracked(() => {
8431
+ const startDrag = this.dragStartCellDate();
8432
+ const currentDrag = this.dragCurrentCellDate();
8433
+ if (startDrag && currentDrag) {
8434
+ if (!this.isMultiSelect()) {
8435
+ const cellCells = this.calendarCells();
8436
+ const hoveredCell = cellCells.find(c => c.date && isSameDay(c.date, currentDrag));
8437
+ if (hoveredCell && !hoveredCell.isDisabled) {
8438
+ this.value.set(currentDrag);
8439
+ this.currentMonth.set(currentDrag.getMonth());
8440
+ this.currentYear.set(currentDrag.getFullYear());
8441
+ }
8442
+ }
8443
+ else {
8444
+ const targetState = this.dragTargetState();
8445
+ const startT = toMidnight(startDrag).getTime();
8446
+ const endT = toMidnight(currentDrag).getTime();
8447
+ const minT = Math.min(startT, endT);
8448
+ const maxT = Math.max(startT, endT);
8449
+ const previousSelection = this.validatedValue() || [];
8450
+ const updatedSelectionMap = new Map();
8451
+ previousSelection.forEach(d => {
8452
+ const t = toMidnight(d).getTime();
8453
+ if (t < minT || t > maxT)
8454
+ updatedSelectionMap.set(t, d);
8455
+ });
8456
+ const min = this.minDate();
8457
+ const max = this.maxDate();
8458
+ const disabledTimes = this.disabledTimestamps();
8459
+ const isDayOfWeekDisabled = this.isDayOfWeekDisabledFn();
8460
+ const dynamicDateCursor = new Date(minT);
8461
+ const loopEndMidnight = new Date(maxT);
8462
+ while (dynamicDateCursor <= loopEndMidnight) {
8463
+ const currentT = dynamicDateCursor.getTime();
8464
+ let isDayRestricted = false;
8465
+ if (min && dynamicDateCursor < toMidnight(min))
8466
+ isDayRestricted = true;
8467
+ if (max && dynamicDateCursor > toMidnight(max))
8468
+ isDayRestricted = true;
8469
+ if (disabledTimes.includes(currentT))
8470
+ isDayRestricted = true;
8471
+ if (isDayOfWeekDisabled(dynamicDateCursor.getDay()))
8472
+ isDayRestricted = true;
8473
+ if (!isDayRestricted) {
8474
+ if (targetState) {
8475
+ updatedSelectionMap.set(currentT, new Date(currentT));
8476
+ }
8477
+ else {
8478
+ updatedSelectionMap.delete(currentT);
8479
+ }
8480
+ }
8481
+ dynamicDateCursor.setDate(dynamicDateCursor.getDate() + 1);
8482
+ }
8483
+ this.value.set(Array.from(updatedSelectionMap.values()));
8484
+ this.currentMonth.set(currentDrag.getMonth());
8485
+ this.currentYear.set(currentDrag.getFullYear());
8486
+ }
8487
+ }
8488
+ });
8489
+ this.isDragging.set(false);
8490
+ this.dragStartCellDate.set(null);
8491
+ this.dragCurrentCellDate.set(null);
8492
+ this.initialSelectedStateBeforeDrag.set(new Map());
8493
+ }
8494
+ findClosestValidDate(baseDate, min, max, disabledTimes, isDayOfWeekDisabled = (jsDay) => false) {
8495
+ const midnightBase = toMidnight(baseDate);
8496
+ let direction = 1;
8497
+ let testDate = new Date(midnightBase.getTime());
8498
+ if (min && midnightBase < toMidnight(min)) {
8499
+ testDate = new Date(toMidnight(min).getTime());
8500
+ direction = 1;
8501
+ }
8502
+ else if (max && midnightBase > toMidnight(max)) {
8503
+ testDate = new Date(toMidnight(max).getTime());
8504
+ direction = -1;
8505
+ }
8506
+ let iterations = 0;
8507
+ while (iterations < 365) {
8508
+ const currentT = testDate.getTime();
8509
+ let isInvalid = false;
8510
+ if (min && testDate < toMidnight(min))
8511
+ isInvalid = true;
8512
+ if (max && testDate > toMidnight(max))
8513
+ isInvalid = true;
8514
+ if (disabledTimes.includes(currentT))
8515
+ isInvalid = true;
8516
+ if (isDayOfWeekDisabled(testDate.getDay()))
8517
+ isInvalid = true;
8518
+ if (!isInvalid)
8519
+ return testDate;
8520
+ testDate.setDate(testDate.getDate() + direction);
8521
+ iterations++;
8522
+ }
8523
+ return min ? min : (max ? max : new Date());
8524
+ }
8525
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8526
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.22", type: CalendarComponent, isStandalone: false, selector: "calendar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "window:mouseup": "onMouseUpGlobal($event)" } }, ngImport: i0, template: "<div class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n <div class=\"prev\">\r\n @if (canGoPrev()) {\r\n <btn (click)=\"prevMonth()\" icon=\"chevron-left\"></btn>\r\n }\r\n </div>\r\n <div class=\"header-label\">\r\n {{ \"month.\" + months[currentMonth()] | translate }} {{ currentYear() }}\r\n </div>\r\n <div class=\"next\">\r\n @if (canGoNext()) {\r\n <btn (click)=\"nextMonth()\" icon=\"chevron-right\"></btn>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar-grid days-header\">\r\n <div class=\"day-label\"></div>\r\n @for (day of daysOfWeek; track day) {\r\n <div class=\"day-label\">{{ \"day.\" + day | translate }}</div>\r\n }\r\n </div>\r\n\r\n <div class=\"calendar-grid days-grid\" (mouseleave)=\"onGridMouseLeave()\">\r\n @for (cell of calendarCells(); track cell.id) {\r\n @if (cell.isWeekNum) {\r\n <div class=\"calendar-cell week-number-cell\">\r\n {{ cell.weekNumber }}\r\n </div>\r\n }\r\n\r\n @else {\r\n <div\r\n class=\"calendar-cell\"\r\n [class.filler]=\"!cell.isCurrentMonth\"\r\n [class.filler-start]=\"cell.isFillerStart\"\r\n [class.filler-end]=\"cell.isFillerEnd\"\r\n [class.disabled]=\"cell.isDisabled\"\r\n [class.in-range]=\"cell.isInDragRange\"\r\n [class.range-start]=\"cell.isRangeStart\"\r\n [class.range-end]=\"cell.isRangeEnd\"\r\n [class.active]=\"cell.isSelected\"\r\n (mousedown)=\"onMouseDown(cell, $event)\"\r\n (mouseenter)=\"onMouseEnter(cell)\"\r\n >\r\n <span class=\"cell-number\">{{ cell.date?.getDate() }}</span>\r\n </div>\r\n }\r\n }\r\n </div>\r\n</div>\r\n", styles: [".calendar-container{--calendar-color: var(--primary-color, var(--bs-primary, var(--mat-sys-primary, #666666)));--calendar-secondary-color: #686868;--calendar-padding: 4px;--calendar-cell-padding: 3px;--calendar-num-size: 30px;--calendar-num-radius: calc(var(--calendar-num-size) / 2 + var(--calendar-cell-padding));min-width:300px;margin-bottom:5px;border:1px solid #e0e0e0;padding:var(--calendar-padding);-webkit-user-select:none;user-select:none;background:#fff}.calendar-container *{box-sizing:border-box}.calendar-container .calendar-header{display:grid;grid-template-columns:50px 1fr 50px;justify-content:space-between;align-items:center;background-color:var(--calendar-color);color:#fff;padding:var(--calendar-padding);border-radius:3px;font-weight:700}.calendar-container .calendar-header .header-label{text-align:center}.calendar-container .calendar-header .prev{display:flex;justify-content:flex-start}.calendar-container .calendar-header .next{display:flex;justify-content:flex-end}.calendar-container .calendar-grid{display:grid;gap:5px 0;grid-template-columns:repeat(8,1fr);text-align:center}.calendar-container .days-header{margin-top:12px;font-weight:500;color:#757575;font-size:14px}.calendar-container .day-label{padding:8px 0}.calendar-container .days-grid{margin-top:8px}.calendar-container .calendar-cell{position:relative;padding:var(--calendar-cell-padding);font-size:14px;color:#333;cursor:pointer;display:flex;align-items:center;justify-content:center}.calendar-container .calendar-cell.week-number-cell{color:var(--calendar-color);font-weight:700;cursor:default;pointer-events:none}.calendar-container .calendar-cell.filler{color:#666;background-color:#f6f6f6}.calendar-container .calendar-cell.filler.filler-start{border-top-left-radius:var(--calendar-num-radius);border-bottom-left-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.filler.filler-end{border-top-right-radius:var(--calendar-num-radius);border-bottom-right-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.in-range:before{opacity:.5;inset:0;content:\" \";position:absolute;background:var(--calendar-color)}.calendar-container .calendar-cell.in-range.range-start:before{border-top-left-radius:var(--calendar-num-radius);border-bottom-left-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.in-range.range-end:before{border-top-right-radius:var(--calendar-num-radius);border-bottom-right-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.disabled{color:#7e7e7e;opacity:.75;cursor:default}.calendar-container .cell-number{position:relative;border-radius:50%;width:var(--calendar-num-size);height:var(--calendar-num-size);display:flex;align-items:center;justify-content:center}.calendar-container .calendar-cell.active .cell-number{background-color:var(--calendar-color);color:#fff}\n"], dependencies: [{ kind: "component", type: BtnComponent, selector: "btn", inputs: ["label", "tooltip", "icon", "disabled", "path", "type", "size"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
8527
+ }
8528
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CalendarComponent, decorators: [{
8529
+ type: Component,
8530
+ args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "calendar", template: "<div class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n <div class=\"prev\">\r\n @if (canGoPrev()) {\r\n <btn (click)=\"prevMonth()\" icon=\"chevron-left\"></btn>\r\n }\r\n </div>\r\n <div class=\"header-label\">\r\n {{ \"month.\" + months[currentMonth()] | translate }} {{ currentYear() }}\r\n </div>\r\n <div class=\"next\">\r\n @if (canGoNext()) {\r\n <btn (click)=\"nextMonth()\" icon=\"chevron-right\"></btn>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar-grid days-header\">\r\n <div class=\"day-label\"></div>\r\n @for (day of daysOfWeek; track day) {\r\n <div class=\"day-label\">{{ \"day.\" + day | translate }}</div>\r\n }\r\n </div>\r\n\r\n <div class=\"calendar-grid days-grid\" (mouseleave)=\"onGridMouseLeave()\">\r\n @for (cell of calendarCells(); track cell.id) {\r\n @if (cell.isWeekNum) {\r\n <div class=\"calendar-cell week-number-cell\">\r\n {{ cell.weekNumber }}\r\n </div>\r\n }\r\n\r\n @else {\r\n <div\r\n class=\"calendar-cell\"\r\n [class.filler]=\"!cell.isCurrentMonth\"\r\n [class.filler-start]=\"cell.isFillerStart\"\r\n [class.filler-end]=\"cell.isFillerEnd\"\r\n [class.disabled]=\"cell.isDisabled\"\r\n [class.in-range]=\"cell.isInDragRange\"\r\n [class.range-start]=\"cell.isRangeStart\"\r\n [class.range-end]=\"cell.isRangeEnd\"\r\n [class.active]=\"cell.isSelected\"\r\n (mousedown)=\"onMouseDown(cell, $event)\"\r\n (mouseenter)=\"onMouseEnter(cell)\"\r\n >\r\n <span class=\"cell-number\">{{ cell.date?.getDate() }}</span>\r\n </div>\r\n }\r\n }\r\n </div>\r\n</div>\r\n", styles: [".calendar-container{--calendar-color: var(--primary-color, var(--bs-primary, var(--mat-sys-primary, #666666)));--calendar-secondary-color: #686868;--calendar-padding: 4px;--calendar-cell-padding: 3px;--calendar-num-size: 30px;--calendar-num-radius: calc(var(--calendar-num-size) / 2 + var(--calendar-cell-padding));min-width:300px;margin-bottom:5px;border:1px solid #e0e0e0;padding:var(--calendar-padding);-webkit-user-select:none;user-select:none;background:#fff}.calendar-container *{box-sizing:border-box}.calendar-container .calendar-header{display:grid;grid-template-columns:50px 1fr 50px;justify-content:space-between;align-items:center;background-color:var(--calendar-color);color:#fff;padding:var(--calendar-padding);border-radius:3px;font-weight:700}.calendar-container .calendar-header .header-label{text-align:center}.calendar-container .calendar-header .prev{display:flex;justify-content:flex-start}.calendar-container .calendar-header .next{display:flex;justify-content:flex-end}.calendar-container .calendar-grid{display:grid;gap:5px 0;grid-template-columns:repeat(8,1fr);text-align:center}.calendar-container .days-header{margin-top:12px;font-weight:500;color:#757575;font-size:14px}.calendar-container .day-label{padding:8px 0}.calendar-container .days-grid{margin-top:8px}.calendar-container .calendar-cell{position:relative;padding:var(--calendar-cell-padding);font-size:14px;color:#333;cursor:pointer;display:flex;align-items:center;justify-content:center}.calendar-container .calendar-cell.week-number-cell{color:var(--calendar-color);font-weight:700;cursor:default;pointer-events:none}.calendar-container .calendar-cell.filler{color:#666;background-color:#f6f6f6}.calendar-container .calendar-cell.filler.filler-start{border-top-left-radius:var(--calendar-num-radius);border-bottom-left-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.filler.filler-end{border-top-right-radius:var(--calendar-num-radius);border-bottom-right-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.in-range:before{opacity:.5;inset:0;content:\" \";position:absolute;background:var(--calendar-color)}.calendar-container .calendar-cell.in-range.range-start:before{border-top-left-radius:var(--calendar-num-radius);border-bottom-left-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.in-range.range-end:before{border-top-right-radius:var(--calendar-num-radius);border-bottom-right-radius:var(--calendar-num-radius)}.calendar-container .calendar-cell.disabled{color:#7e7e7e;opacity:.75;cursor:default}.calendar-container .cell-number{position:relative;border-radius:50%;width:var(--calendar-num-size);height:var(--calendar-num-size);display:flex;align-items:center;justify-content:center}.calendar-container .calendar-cell.active .cell-number{background-color:var(--calendar-color);color:#fff}\n"] }]
8531
+ }], ctorParameters: () => [], propDecorators: { onMouseUpGlobal: [{
8532
+ type: HostListener,
8533
+ args: ["window:mouseup", ["$event"]]
8534
+ }] } });
8535
+
7588
8536
  class CloseBtnComponent {
7589
8537
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: CloseBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7590
8538
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.22", type: CloseBtnComponent, isStandalone: false, selector: "close-btn", ngImport: i0, template: "", isInline: true, styles: ["close-btn{--close-bg: var(--primary-color, rgba(0, 0, 0, .3));--close-color: #ffffff;--close-size: 18px;--close-distance: 4px;--close-spacing: 8px;position:relative;display:block;width:var(--close-size);height:var(--close-size);cursor:pointer;transition:.2s ease;background-color:var(--close-bg);border-radius:50%}close-btn:before,close-btn:after{--rotation: 45deg;content:\"\";position:absolute;top:50%;left:50%;width:calc(100% - var(--close-spacing));transform:translate(-50%,-50%) rotate(var(--rotation));height:1px;background:var(--close-color);transition:.2s ease}close-btn:after{--rotation: -45deg}\n"], encapsulation: i0.ViewEncapsulation.None }); }
@@ -9864,6 +10812,7 @@ const directives = [
9864
10812
  const components = [
9865
10813
  BtnComponent,
9866
10814
  BtnDefaultComponent,
10815
+ CalendarComponent,
9867
10816
  ChipsComponent,
9868
10817
  CloseBtnComponent,
9869
10818
  CodeEditorComponent,
@@ -10109,8 +11058,8 @@ class NgxUtilsModule {
10109
11058
  };
10110
11059
  }
10111
11060
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10112
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, declarations: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, SyncAsyncPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, ChipsComponent, CloseBtnComponent, CodeEditorComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent], imports: [CommonModule,
10113
- FormsModule], exports: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, SyncAsyncPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, ChipsComponent, CloseBtnComponent, CodeEditorComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent, FormsModule] }); }
11061
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, declarations: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, SyncAsyncPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, CalendarComponent, ChipsComponent, CloseBtnComponent, CodeEditorComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent], imports: [CommonModule,
11062
+ FormsModule], exports: [ChunkPipe, EntriesPipe, ExtraItemPropertiesPipe, FilterPipe, FindPipe, FormatNumberPipe, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplatePipe, GroupByPipe, IncludesPipe, IsTypePipe, JoinPipe, KeysPipe, MapPipe, MaxPipe, MinPipe, PopPipe, ReducePipe, RemapPipe, ReplacePipe, ReversePipe, RoundPipe, SafeHtmlPipe, ShiftPipe, SplitPipe, SyncAsyncPipe, TranslatePipe, ValuesPipe, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, BackgroundDirective, ComponentLoaderDirective, DynamicTableTemplateDirective, GlobalTemplateDirective, IconDirective, NgxTemplateOutletDirective, PaginationDirective, PaginationItemDirective, ResourceIfDirective, StickyDirective, StickyClassDirective, DropdownDirective, DropdownContentDirective, DropdownToggleDirective, TabsItemDirective, TabsTemplateDirective, UnorderedListItemDirective, UnorderedListTemplateDirective, BtnComponent, BtnDefaultComponent, CalendarComponent, ChipsComponent, CloseBtnComponent, CodeEditorComponent, DropListComponent, DropdownBoxComponent, DynamicTableComponent, DynamicTableCellComponent, FakeModuleComponent, PaginationMenuComponent, IconComponent, IconDefaultComponent, InteractiveCanvasComponent, InteractiveItemComponent, InteractiveCircleComponent, InteractiveRectComponent, TabsComponent, UnorderedListComponent, UploadComponent, WysiwygComponent, FormsModule] }); }
10114
11063
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.22", ngImport: i0, type: NgxUtilsModule, providers: pipes, imports: [CommonModule,
10115
11064
  FormsModule, FormsModule] }); }
10116
11065
  }
@@ -10140,5 +11089,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.22", ngImpo
10140
11089
  * Generated bundle index. Do not edit.
10141
11090
  */
10142
11091
 
10143
- export { API_SERVICE, APP_BASE_URL, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, AuthGuard, BASE_CONFIG, BUTTON_TYPE, BackgroundDirective, BaseDialogService, BaseHttpClient, BaseHttpService, BaseToasterService, BtnComponent, BtnDefaultComponent, CONFIG_SERVICE, CacheService, CanvasColor, CanvasUtils, ChipsComponent, ChunkPipe, Circle, CloseBtnComponent, CodeEditorComponent, ComponentLoaderDirective, ComponentLoaderService, ConfigService, DIALOG_SERVICE, DateUtils, DragDropEventPlugin, DropListComponent, DropdownBoxComponent, DropdownContentDirective, DropdownDirective, DropdownToggleDirective, DynamicTableCellComponent, DynamicTableComponent, DynamicTableTemplateDirective, EDITOR_TYPES, EPSILON, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, Enum, ErrorHandlerService, EventsService, ExclusionsRenderer, ExtraItemPropertiesPipe, FactoryDependencies, FakeModuleComponent, FileSystemEntry, FileUtils, FilterPipe, FindPipe, ForbiddenZone, FormatNumberPipe, FormatterService, GenericValue, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, HitZoneRenderer, HrefSerializer, ICON_MAP, ICON_SERVICE, ICON_TYPE, IConfiguration, IconComponent, IconDefaultComponent, IconDirective, IconService, IncludesPipe, Initializer, InteractiveCanvasComponent, InteractiveCircleComponent, InteractiveItemComponent, InteractiveRectComponent, IsTypePipe, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, LocalHttpService, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, OPTIONS_TOKEN, ObjectType, ObjectUtils, ObservableUtils, OpenApiService, Oval, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, RESIZE_DELAY, RESIZE_STRATEGY, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, RequestBag, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, RulerCanvasRenderer, SCHEMA_SELECTOR, SCRIPT_PARAMS, STATIC_SCHEMAS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShapeGroup, ShiftPipe, SocketClient, SocketService, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, SyncAsyncPipe, TOASTER_SERVICE, TabsComponent, TabsItemDirective, TabsTemplateDirective, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UploadComponent, ValuedPromise, ValuesPipe, WysiwygComponent, addPts, cachedFactory, cancelablePromise, checkTransitions, clamp, computedPrevious, createTypedProvider, cssStyles, cssVariables, diffEntities, distance, distanceSq, dividePts, dotProduct, ensurePoint, eqPts, getComponentDef, getCssVariables, getRoot, getType, impatientPromise, injectOptions, isBrowser, isEqual, isFunction, isObject, isPoint, isString, isStringWithValue, isZero, lengthOfPt, lengthSq, lerpPts, md5, multiplyPts, negatePt, normalizePt, normalizeRange, overflow, parseSelector, perpendicular, promiseTimeout, provideEntryComponents, provideOptions, provideWithOptions, rotateDeg, rotateRad, scalePt, selectorMatchesList, stringify, subPts, svgToDataUri, switchClass, toDegrees, toRadians, toStringArray, tripleProduct };
11092
+ export { API_SERVICE, APP_BASE_URL, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, AuthGuard, BASE_CONFIG, BUTTON_TYPE, BackgroundDirective, BaseDialogService, BaseHttpClient, BaseHttpService, BaseToasterService, BtnComponent, BtnDefaultComponent, CONFIG_SERVICE, CacheService, CalendarComponent, CanvasColor, CanvasUtils, ChipsComponent, ChunkPipe, Circle, CloseBtnComponent, CodeEditorComponent, ComponentLoaderDirective, ComponentLoaderService, ConfigService, DIALOG_SERVICE, DateUtils, DragDropEventPlugin, DropListComponent, DropdownBoxComponent, DropdownContentDirective, DropdownDirective, DropdownToggleDirective, DynamicTableCellComponent, DynamicTableComponent, DynamicTableTemplateDirective, EDITOR_TYPES, EPSILON, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, Enum, ErrorHandlerService, EventsService, ExclusionsRenderer, ExtraItemPropertiesPipe, FactoryDependencies, FakeModuleComponent, FileSystemEntry, FileUtils, FilterPipe, FindPipe, ForbiddenZone, FormatNumberPipe, FormatterService, GenericValue, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, HitZoneRenderer, HrefSerializer, ICON_MAP, ICON_SERVICE, ICON_TYPE, IConfiguration, IconComponent, IconDefaultComponent, IconDirective, IconService, IncludesPipe, Initializer, InteractiveCanvasComponent, InteractiveCircleComponent, InteractiveItemComponent, InteractiveRectComponent, IsTypePipe, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, LocalHttpService, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, OPTIONS_TOKEN, ObjectType, ObjectUtils, ObservableUtils, OpenApiService, Oval, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, RESIZE_DELAY, RESIZE_STRATEGY, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, RequestBag, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, RulerCanvasRenderer, SCHEMA_SELECTOR, SCRIPT_PARAMS, STATIC_SCHEMAS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShapeGroup, ShiftPipe, SocketClient, SocketService, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, SyncAsyncPipe, TOASTER_SERVICE, TabsComponent, TabsItemDirective, TabsTemplateDirective, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UploadComponent, ValuedPromise, ValuesPipe, WysiwygComponent, addDate, addPts, cachedFactory, cancelablePromise, checkTransitions, clamp, computedPrevious, createTypedProvider, cssStyles, cssVariables, diffEntities, distance, distanceSq, dividePts, dotProduct, ensurePoint, eqPts, getComponentDef, getCssVariables, getISOWeekNumber, getRoot, getType, impatientPromise, injectOptions, isBrowser, isEqual, isFunction, isObject, isPoint, isSameDay, isString, isStringWithValue, isZero, lengthOfPt, lengthSq, lerpPts, md5, multiplyPts, negatePt, normalizePt, normalizeRange, overflow, parseSelector, parseValidDate, perpendicular, promiseTimeout, provideEntryComponents, provideOptions, provideWithOptions, rotateDeg, rotateRad, scalePt, selectorMatchesList, stringify, subPts, svgToDataUri, switchClass, toDegrees, toMidnight, toRadians, toStringArray, tripleProduct };
10144
11093
  //# sourceMappingURL=stemy-ngx-utils.mjs.map