limitng 0.23.10 → 0.23.12

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 (45) hide show
  1. package/fesm2022/limitng-alt-buyuk-kart.mjs +3 -3
  2. package/fesm2022/limitng-alt-kucuk-kart.mjs +3 -3
  3. package/fesm2022/limitng-blob-response-handler.mjs +180 -35
  4. package/fesm2022/limitng-blob-response-handler.mjs.map +1 -1
  5. package/fesm2022/limitng-dikey-baslikli-panel-sol.mjs +3 -3
  6. package/fesm2022/limitng-dikey-baslikli-panel.mjs +3 -3
  7. package/fesm2022/limitng-directives-adAlani.directive.mjs +3 -3
  8. package/fesm2022/limitng-directives-adresAlani.directive.mjs +3 -3
  9. package/fesm2022/limitng-directives-buyukHarf.directive.mjs +3 -3
  10. package/fesm2022/limitng-directives-ciftBoslukTek.directive.mjs +3 -3
  11. package/fesm2022/limitng-directives-dirty.directive.mjs +3 -3
  12. package/fesm2022/limitng-directives-disable.directive.mjs +6 -6
  13. package/fesm2022/limitng-directives-flexBasis.directive.mjs +9 -9
  14. package/fesm2022/limitng-directives-ilkHarfBuyuk.directive.mjs +3 -3
  15. package/fesm2022/limitng-directives-imleciBasaAl.directive.mjs +3 -3
  16. package/fesm2022/limitng-directives-kodAlani.directive.mjs +3 -3
  17. package/fesm2022/limitng-directives-maksimumUzunluk.directive.mjs +3 -3
  18. package/fesm2022/limitng-directives-okTuslariylaIcerdeGezin.directive.mjs +3 -3
  19. package/fesm2022/limitng-directives-sagSolBoslukSil.directive.mjs +3 -3
  20. package/fesm2022/limitng-directives-standartAlan.directive.mjs +3 -3
  21. package/fesm2022/limitng-directives-sutunGenisligi.directive.mjs +12 -12
  22. package/fesm2022/limitng-directives-translate-key.directive.ts.mjs +3 -3
  23. package/fesm2022/limitng-directives-tumBoslukSil.directive.mjs +3 -3
  24. package/fesm2022/limitng-directives-tumIlkHarfBuyuk.directive.mjs +3 -3
  25. package/fesm2022/limitng-directives.mjs +63 -63
  26. package/fesm2022/limitng-filtre-bar.mjs +3 -3
  27. package/fesm2022/limitng-geri-ileri-detay.mjs +3 -3
  28. package/fesm2022/limitng-geri-ileri-liste.mjs +3 -3
  29. package/fesm2022/limitng-pipes-ayAdiPipe.mjs +3 -3
  30. package/fesm2022/limitng-pipes-boolToPlus.pipe.mjs +3 -3
  31. package/fesm2022/limitng-pipes-boolToPlusMinus.pipe.mjs +3 -3
  32. package/fesm2022/limitng-pipes-dateToText.pipe.mjs +3 -3
  33. package/fesm2022/limitng-pipes-evetHayir.pipe.mjs +3 -3
  34. package/fesm2022/limitng-pipes-global-filter-formatter.pipe.mjs +3 -3
  35. package/fesm2022/limitng-pipes-mecraTuru.pipe.mjs +3 -3
  36. package/fesm2022/limitng-pipes-safe.pipe.mjs +3 -3
  37. package/fesm2022/limitng-pipes-toSeverity.pipe.mjs +3 -3
  38. package/fesm2022/limitng-pipes-tooltip-formatter.pipe.mjs +3 -3
  39. package/fesm2022/limitng-rapor-kart.mjs +3 -3
  40. package/fesm2022/limitng-sol-buyuk-kart.mjs +3 -3
  41. package/fesm2022/limitng-sol-kucuk-kart.mjs +3 -3
  42. package/fesm2022/limitng-yatay-baslikli-panel.mjs +3 -3
  43. package/package.json +1 -1
  44. package/types/limitng-blob-response-handler.d.ts +9 -4
  45. package/types/limitng-blob-response-handler.d.ts.map +1 -1
@@ -25,7 +25,7 @@ var AltBuyukKartComponent = class AltBuyukKartComponent {
25
25
  static {
26
26
  this.ɵfac = i0.ɵɵngDeclareFactory({
27
27
  minVersion: "12.0.0",
28
- version: "22.2.1",
28
+ version: "22.2.2",
29
29
  ngImport: i0,
30
30
  type: AltBuyukKartComponent,
31
31
  deps: [],
@@ -35,7 +35,7 @@ var AltBuyukKartComponent = class AltBuyukKartComponent {
35
35
  static {
36
36
  this.ɵcmp = i0.ɵɵngDeclareComponent({
37
37
  minVersion: "17.0.0",
38
- version: "22.2.1",
38
+ version: "22.2.2",
39
39
  type: AltBuyukKartComponent,
40
40
  isStandalone: true,
41
41
  selector: "alt-buyuk-kart",
@@ -115,7 +115,7 @@ var AltBuyukKartComponent = class AltBuyukKartComponent {
115
115
  };
116
116
  i0.ɵɵngDeclareClassMetadata({
117
117
  minVersion: "12.0.0",
118
- version: "22.2.1",
118
+ version: "22.2.2",
119
119
  ngImport: i0,
120
120
  type: AltBuyukKartComponent,
121
121
  decorators: [{
@@ -22,7 +22,7 @@ var AltKucukKartComponent = class AltKucukKartComponent {
22
22
  static {
23
23
  this.ɵfac = i0.ɵɵngDeclareFactory({
24
24
  minVersion: "12.0.0",
25
- version: "22.2.1",
25
+ version: "22.2.2",
26
26
  ngImport: i0,
27
27
  type: AltKucukKartComponent,
28
28
  deps: [],
@@ -32,7 +32,7 @@ var AltKucukKartComponent = class AltKucukKartComponent {
32
32
  static {
33
33
  this.ɵcmp = i0.ɵɵngDeclareComponent({
34
34
  minVersion: "17.1.0",
35
- version: "22.2.1",
35
+ version: "22.2.2",
36
36
  type: AltKucukKartComponent,
37
37
  isStandalone: true,
38
38
  selector: "alt-kucuk-kart",
@@ -89,7 +89,7 @@ var AltKucukKartComponent = class AltKucukKartComponent {
89
89
  };
90
90
  i0.ɵɵngDeclareClassMetadata({
91
91
  minVersion: "12.0.0",
92
- version: "22.2.1",
92
+ version: "22.2.2",
93
93
  ngImport: i0,
94
94
  type: AltKucukKartComponent,
95
95
  decorators: [{
@@ -24,6 +24,120 @@ var ExcelRaporuSonuc = class {
24
24
  this.window = { displayGridLines: false };
25
25
  }
26
26
  };
27
+ const TOKEN_DESENI = /\s*(\d+(?:\.\d+)?|[A-Za-z_]+|[()+\-*/,])/gy;
28
+ var ToplamFormuluHesaplayici = class ToplamFormuluHesaplayici {
29
+ constructor(formul) {
30
+ this.konum = 0;
31
+ this.tokenlar = ToplamFormuluHesaplayici.tokenlaraAyir(formul);
32
+ }
33
+ static hesapla(formul) {
34
+ try {
35
+ const hesaplayici = new ToplamFormuluHesaplayici(formul);
36
+ const sonuc = hesaplayici.ifade();
37
+ return hesaplayici.konum === hesaplayici.tokenlar.length && Number.isFinite(sonuc) ? sonuc : void 0;
38
+ } catch {
39
+ return;
40
+ }
41
+ }
42
+ static tokenlaraAyir(formul) {
43
+ const tokenlar = [];
44
+ TOKEN_DESENI.lastIndex = 0;
45
+ let eslesme = TOKEN_DESENI.exec(formul);
46
+ let okunan = 0;
47
+ while (eslesme) {
48
+ const deger = eslesme[1];
49
+ okunan = TOKEN_DESENI.lastIndex;
50
+ if (/^\d/.test(deger)) tokenlar.push({
51
+ deger,
52
+ tur: "sayi"
53
+ });
54
+ else if (/^[A-Za-z_]/.test(deger)) tokenlar.push({
55
+ deger: deger.toUpperCase(),
56
+ tur: "ad"
57
+ });
58
+ else tokenlar.push({
59
+ deger,
60
+ tur: "op"
61
+ });
62
+ eslesme = TOKEN_DESENI.exec(formul);
63
+ }
64
+ if (formul.slice(okunan).trim()) throw new Error("Geçersiz formül");
65
+ return tokenlar;
66
+ }
67
+ ifade() {
68
+ let sonuc = this.terim();
69
+ while (this.sonrakiOperatorMu("+", "-")) {
70
+ const islem = this.tokenlar[this.konum++].deger;
71
+ const sag = this.terim();
72
+ sonuc = islem === "+" ? sonuc + sag : sonuc - sag;
73
+ }
74
+ return sonuc;
75
+ }
76
+ terim() {
77
+ let sonuc = this.birim();
78
+ while (this.sonrakiOperatorMu("*", "/")) {
79
+ const islem = this.tokenlar[this.konum++].deger;
80
+ const sag = this.birim();
81
+ if (islem === "/" && sag === 0) throw new Error("Sıfıra bölme");
82
+ sonuc = islem === "*" ? sonuc * sag : sonuc / sag;
83
+ }
84
+ return sonuc;
85
+ }
86
+ birim() {
87
+ const token = this.tokenlar[this.konum++];
88
+ if (!token) throw new Error("Beklenmeyen son");
89
+ if (token.tur === "sayi") return Number(token.deger);
90
+ if (token.tur === "op" && token.deger === "-") return -this.birim();
91
+ if (token.tur === "op" && token.deger === "(") {
92
+ const sonuc = this.ifade();
93
+ this.operatorBekle(")");
94
+ return sonuc;
95
+ }
96
+ if (token.tur === "ad") return this.fonksiyon(token.deger);
97
+ throw new Error("Geçersiz token");
98
+ }
99
+ fonksiyon(ad) {
100
+ this.operatorBekle("(");
101
+ if (ad === "ABS") {
102
+ const sonuc = Math.abs(this.ifade());
103
+ this.operatorBekle(")");
104
+ return sonuc;
105
+ }
106
+ if (ad === "IFERROR") {
107
+ const baslangic = this.konum;
108
+ let sonuc;
109
+ try {
110
+ sonuc = this.ifade();
111
+ } catch {
112
+ this.konum = baslangic;
113
+ this.virguleKadarAtla();
114
+ }
115
+ this.operatorBekle(",");
116
+ const yedek = this.ifade();
117
+ this.operatorBekle(")");
118
+ return sonuc ?? yedek;
119
+ }
120
+ throw new Error(`Desteklenmeyen fonksiyon: ${ad}`);
121
+ }
122
+ virguleKadarAtla() {
123
+ let derinlik = 0;
124
+ while (this.konum < this.tokenlar.length) {
125
+ const { deger, tur } = this.tokenlar[this.konum];
126
+ if (tur === "op" && deger === "(") derinlik++;
127
+ else if (tur === "op" && deger === ")") derinlik--;
128
+ else if (tur === "op" && deger === "," && derinlik === 0) return;
129
+ this.konum++;
130
+ }
131
+ }
132
+ sonrakiOperatorMu(...operatorler) {
133
+ const token = this.tokenlar[this.konum];
134
+ return token?.tur === "op" && operatorler.includes(token.deger);
135
+ }
136
+ operatorBekle(operator) {
137
+ const token = this.tokenlar[this.konum++];
138
+ if (token?.tur !== "op" || token.deger !== operator) throw new Error(`Beklenen: ${operator}`);
139
+ }
140
+ };
27
141
  var JsonToExcelTableBuilder = class {
28
142
  constructor(table) {
29
143
  this.table = table;
@@ -64,7 +178,6 @@ var JsonToExcelSheetBuilder = class {
64
178
  ...options.footer && { footer: options.footer },
65
179
  ...options.header && { header: options.header },
66
180
  ...options.sol !== void 0 && { sol: options.sol },
67
- ...options.toplamDegerleri && { toplamDegerleri: options.toplamDegerleri },
68
181
  ...options.toplamEtiketi !== void 0 && { toplamEtiketi: options.toplamEtiketi },
69
182
  ...options.toplamSatiri !== void 0 && { toplamSatiri: options.toplamSatiri },
70
183
  ...options.ust !== void 0 && { ust: options.ust }
@@ -139,26 +252,28 @@ var JsonToExcelParser = class {
139
252
  const tabloFormulleri = /* @__PURE__ */ new Map();
140
253
  for (const worksheet of workbook.worksheets) for (const tablo of worksheet.getTables()) {
141
254
  const formuller = /* @__PURE__ */ new Map();
142
- tablo.table.columns.forEach((kolon, index) => {
143
- if (kolon.totalsRowFunction === "custom" && kolon.totalsRowFormula) formuller.set(index + 1, kolon.totalsRowFormula);
144
- });
255
+ for (const [index, kolon] of tablo.table.columns.entries()) if (kolon.totalsRowFunction === "custom" && kolon.totalsRowFormula) formuller.set(index + 1, kolon.totalsRowFormula);
145
256
  if (formuller.size) tabloFormulleri.set(tablo.table.name, formuller);
146
257
  }
147
258
  if (!tabloFormulleri.size) return buffer;
148
259
  const zip = await JSZip.loadAsync(buffer);
149
- for (const dosyaAdi of Object.keys(zip.files).filter((ad) => /^xl\/tables\/table\d+\.xml$/.test(ad))) {
260
+ const tabloDosyalari = Object.keys(zip.files).filter((ad) => /^xl\/tables\/table\d+\.xml$/.test(ad));
261
+ await Promise.all(tabloDosyalari.map(async (dosyaAdi) => {
150
262
  const xml = await zip.file(dosyaAdi).async("string");
151
263
  const tabloAdi = /<table [^>]*?\bname="([^"]*)"/.exec(xml)?.[1];
152
264
  const formuller = tabloAdi ? tabloFormulleri.get(tabloAdi) : void 0;
153
- if (!formuller) continue;
265
+ if (!formuller) return;
154
266
  const yeniXml = xml.replaceAll(/<tableColumn id="(\d+)"([^>]*?) totalsRowFunction="custom"([^>]*?)\/>/g, (eslesme, id, once, sonra) => {
155
267
  const formul = formuller.get(Number(id));
156
- return formul ? `<tableColumn id="${id}"${once} totalsRowFunction="custom"${sonra}><totalsRowFormula>${formul}</totalsRowFormula></tableColumn>` : eslesme;
268
+ return formul ? `<tableColumn id="${id}"${once} totalsRowFunction="custom"${sonra}><totalsRowFormula>${this.xmlKacis(formul)}</totalsRowFormula></tableColumn>` : eslesme;
157
269
  });
158
270
  zip.file(dosyaAdi, yeniXml);
159
- }
271
+ }));
160
272
  return zip.generateAsync({ type: "arraybuffer" });
161
273
  }
274
+ static xmlKacis(metin) {
275
+ return metin.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
276
+ }
162
277
  static standartPageSetupOlustur() {
163
278
  return {
164
279
  bottomMargin: 1,
@@ -393,6 +508,7 @@ var JsonToExcelParser = class {
393
508
  const gecerliTableStyle = this.gecerliTableStyleVer(sonuc.currentTableStyle);
394
509
  const gorunenBaslikMetinleri = table.columns.map((column) => this.baslikMetniniHazirla(column.header.title || "")).map((title) => title.replaceAll("\n", " "));
395
510
  const tabloKolonAdlari = this.benzersizKolonAdlariOlustur(gorunenBaslikMetinleri);
511
+ const tabloAdi = this.tabloAdiOlustur(worksheet.name, startRow, startCol);
396
512
  const headerFont = table.header?.font;
397
513
  const uygulanacakHeaderFont = headerFont?.color ? headerFont : {
398
514
  ...headerFont,
@@ -424,7 +540,7 @@ var JsonToExcelParser = class {
424
540
  const bosSatirEklendi = satirlar.length === 0;
425
541
  const tabloSatirlari = bosSatirEklendi ? [table.columns.map(() => "")] : satirlar;
426
542
  worksheet.addTable({
427
- name: this.tabloAdiOlustur(worksheet.name, startRow, startCol),
543
+ name: tabloAdi,
428
544
  ref: worksheet.getCell(startRow, startCol).address,
429
545
  headerRow: true,
430
546
  totalsRow: toplamSatiriVar,
@@ -432,7 +548,7 @@ var JsonToExcelParser = class {
432
548
  columns: tabloKolonAdlari.map((ad, index) => ({
433
549
  name: ad,
434
550
  filterButton: true,
435
- ...toplamSatiriVar && this.toplamSatiriEtiketiVer(toplamHucreleri[index]?.deger, index, this.sayisalKolonMu(table.columns[index]?.arrayType), this.toplamDegeriVerilmisMi(table, index))
551
+ ...toplamSatiriVar && this.toplamSatiriKolonuVer(toplamHucreleri[index]?.deger, index, this.toplamFonksiyonuVer(table.columns[index]), table.columns[index].toplamFormulu ? this.toplamFormuluExcelMetniVer(table, table.columns[index].toplamFormulu, tabloAdi, tabloKolonAdlari) : void 0)
436
552
  })),
437
553
  rows: tabloSatirlari
438
554
  });
@@ -584,32 +700,61 @@ var JsonToExcelParser = class {
584
700
  static toplamHucreleriniHazirla(table) {
585
701
  return table.columns.map((column, colIndex) => {
586
702
  if (colIndex === 0) return { deger: table.toplamEtiketi ?? "Toplam" };
587
- if (this.toplamDegeriVerilmisMi(table, colIndex)) return { deger: table.toplamDegerleri[column.property] ?? null };
588
- if (!this.sayisalKolonMu(column.arrayType)) return { deger: null };
589
- let toplam = 0;
590
- for (const row of table.collection) {
591
- const sayi = Number(row[column.property]);
592
- if (Number.isFinite(sayi)) toplam += sayi;
593
- }
703
+ if (column.toplamFormulu) return { deger: this.toplamFormuluSonucuVer(table, column.toplamFormulu) ?? null };
704
+ const fonksiyon = this.toplamFonksiyonuVer(column);
705
+ if (!fonksiyon) return { deger: null };
706
+ const { adet, toplam } = this.kolonToplaminiVer(table, column.property);
707
+ if (fonksiyon === "average") return { deger: adet ? toplam / adet : 0 };
594
708
  return { deger: toplam };
595
709
  });
596
710
  }
597
- static toplamDegeriVerilmisMi(table, kolonIndex) {
598
- const property = table.columns[kolonIndex]?.property;
599
- return kolonIndex > 0 && !!table.toplamDegerleri && property !== void 0 && property in table.toplamDegerleri;
600
- }
601
- static toplamSatiriEtiketiVer(deger, kolonIndex, sayisal, ozelDeger) {
602
- if (kolonIndex === 0) return { totalsRowLabel: typeof deger === "string" || typeof deger === "number" ? String(deger) : "" };
603
- if (ozelDeger) {
604
- if (typeof deger === "number" && Number.isFinite(deger)) return {
605
- totalsRowFunction: "custom",
606
- totalsRowFormula: String(deger),
607
- totalsRowResult: deger
608
- };
609
- return typeof deger === "string" && deger !== "" ? { totalsRowLabel: deger } : void 0;
711
+ static kolonToplaminiVer(table, property) {
712
+ let toplam = 0;
713
+ let adet = 0;
714
+ for (const row of table.collection) {
715
+ const hamDeger = row[property];
716
+ const sayi = Number(hamDeger);
717
+ if (hamDeger !== null && hamDeger !== void 0 && hamDeger !== "" && Number.isFinite(sayi)) {
718
+ toplam += sayi;
719
+ adet++;
720
+ }
610
721
  }
611
- if (sayisal) return { totalsRowFunction: "sum" };
612
- if (typeof deger === "string" && deger !== "") return { totalsRowLabel: deger };
722
+ return {
723
+ adet,
724
+ toplam
725
+ };
726
+ }
727
+ static toplamFormulundekiKolonlariVer(table, formul) {
728
+ const properties = [...formul.matchAll(/\{([^{}]+)\}/g)].map((eslesme) => eslesme[1]);
729
+ const tumKolonlarVar = properties.every((property) => table.columns.some((kolon) => kolon.property === property));
730
+ return properties.length && tumKolonlarVar ? properties : void 0;
731
+ }
732
+ static toplamFormuluSonucuVer(table, formul) {
733
+ if (!this.toplamFormulundekiKolonlariVer(table, formul)) return;
734
+ const sayisalFormul = formul.replaceAll(/\{([^{}]+)\}/g, (_eslesme, property) => {
735
+ const { toplam } = this.kolonToplaminiVer(table, property);
736
+ return toplam < 0 ? `(${toplam})` : String(toplam);
737
+ });
738
+ return ToplamFormuluHesaplayici.hesapla(sayisalFormul);
739
+ }
740
+ static toplamFormuluExcelMetniVer(table, formul, tabloAdi, kolonAdlari) {
741
+ if (!this.toplamFormulundekiKolonlariVer(table, formul)) return;
742
+ return formul.replaceAll(/\{([^{}]+)\}/g, (_eslesme, property) => {
743
+ return `SUBTOTAL(109,${tabloAdi}[${kolonAdlari[table.columns.findIndex((kolon) => kolon.property === property)].replaceAll(/[[\]#']/g, "'$&")}])`;
744
+ });
745
+ }
746
+ static toplamFonksiyonuVer(column) {
747
+ if (column.toplamFonksiyonu === "none" || column.toplamFormulu) return;
748
+ return column.toplamFonksiyonu ?? (this.sayisalKolonMu(column.arrayType) ? "sum" : void 0);
749
+ }
750
+ static toplamSatiriKolonuVer(deger, kolonIndex, fonksiyon, excelFormulu) {
751
+ if (kolonIndex === 0) return { totalsRowLabel: typeof deger === "string" ? deger : "" };
752
+ if (excelFormulu) return {
753
+ totalsRowFormula: excelFormulu,
754
+ totalsRowFunction: "custom",
755
+ ...typeof deger === "number" && { totalsRowResult: deger }
756
+ };
757
+ return fonksiyon ? { totalsRowFunction: fonksiyon } : void 0;
613
758
  }
614
759
  static toplamSatiriniYaz(worksheet, sonuc, table, toplamHucreleri, satirNo, startCol) {
615
760
  const wsRow = worksheet.getRow(satirNo);
@@ -1102,7 +1247,7 @@ var BlobResponseHandlerService = class BlobResponseHandlerService {
1102
1247
  static {
1103
1248
  this.ɵfac = i0.ɵɵngDeclareFactory({
1104
1249
  minVersion: "12.0.0",
1105
- version: "22.2.1",
1250
+ version: "22.2.2",
1106
1251
  ngImport: i0,
1107
1252
  type: BlobResponseHandlerService,
1108
1253
  deps: [],
@@ -1112,7 +1257,7 @@ var BlobResponseHandlerService = class BlobResponseHandlerService {
1112
1257
  static {
1113
1258
  this.ɵprov = i0.ɵɵngDeclareInjectable({
1114
1259
  minVersion: "12.0.0",
1115
- version: "22.2.1",
1260
+ version: "22.2.2",
1116
1261
  ngImport: i0,
1117
1262
  type: BlobResponseHandlerService,
1118
1263
  providedIn: "root"
@@ -1121,7 +1266,7 @@ var BlobResponseHandlerService = class BlobResponseHandlerService {
1121
1266
  };
1122
1267
  i0.ɵɵngDeclareClassMetadata({
1123
1268
  minVersion: "12.0.0",
1124
- version: "22.2.1",
1269
+ version: "22.2.2",
1125
1270
  ngImport: i0,
1126
1271
  type: BlobResponseHandlerService,
1127
1272
  decorators: [{