@flowselections/layout-maker 1.59.2 → 1.62.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 (58) hide show
  1. package/dist-lib/components/LivePrintstatusRegel.d.ts.map +1 -1
  2. package/dist-lib/components/LivePrintstatusRegel.js +29 -29
  3. package/dist-lib/components/PrintInstallatiesBlok.d.ts +3 -0
  4. package/dist-lib/components/PrintInstallatiesBlok.d.ts.map +1 -0
  5. package/dist-lib/components/PrintInstallatiesBlok.js +29 -0
  6. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  7. package/dist-lib/components/PrintQueuePage.js +27 -8
  8. package/dist-lib/components/PrintStatusBanner.d.ts.map +1 -1
  9. package/dist-lib/components/PrintStatusBanner.js +3 -1
  10. package/dist-lib/components/PrintenInstellenWizard.d.ts.map +1 -1
  11. package/dist-lib/components/PrintenInstellenWizard.js +14 -1
  12. package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
  13. package/dist-lib/components/PrintplekDetailPage.js +18 -5
  14. package/dist-lib/components/WerkplekOmzettingStap.d.ts.map +1 -1
  15. package/dist-lib/components/WerkplekOmzettingStap.js +2 -1
  16. package/dist-lib/components/WerkplekkenTab.d.ts.map +1 -1
  17. package/dist-lib/components/WerkplekkenTab.js +27 -3
  18. package/dist-lib/index.d.ts +2 -0
  19. package/dist-lib/index.d.ts.map +1 -1
  20. package/dist-lib/index.js +5 -3
  21. package/dist-lib/integrations/supabase/types.d.ts +441 -0
  22. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  23. package/dist-lib/lib/computerKoppeling.d.ts +47 -0
  24. package/dist-lib/lib/computerKoppeling.d.ts.map +1 -0
  25. package/dist-lib/lib/computerKoppeling.js +48 -0
  26. package/dist-lib/lib/etiketControle.d.ts +8 -0
  27. package/dist-lib/lib/etiketControle.d.ts.map +1 -1
  28. package/dist-lib/lib/etiketControle.js +7 -2
  29. package/dist-lib/lib/foutTekst.d.ts +6 -0
  30. package/dist-lib/lib/foutTekst.d.ts.map +1 -1
  31. package/dist-lib/lib/foutTekst.js +46 -16
  32. package/dist-lib/lib/layoutVerwijzingen.js +1 -1
  33. package/dist-lib/lib/printApi.d.ts +1 -1
  34. package/dist-lib/lib/printApi.d.ts.map +1 -1
  35. package/dist-lib/lib/printApi.js +5 -4
  36. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  37. package/dist-lib/lib/printQueue.server.js +16 -2
  38. package/dist-lib/lib/printService.functions.d.ts +129 -0
  39. package/dist-lib/lib/printService.functions.d.ts.map +1 -1
  40. package/dist-lib/lib/printService.functions.js +113 -2
  41. package/dist-lib/lib/printnodeStatus.d.ts +1 -0
  42. package/dist-lib/lib/printnodeStatus.d.ts.map +1 -1
  43. package/dist-lib/lib/printnodeStatus.js +4 -2
  44. package/dist-lib/lib/printnodeWebhook.d.ts +12 -0
  45. package/dist-lib/lib/printnodeWebhook.d.ts.map +1 -1
  46. package/dist-lib/lib/printnodeWebhook.js +27 -1
  47. package/dist-lib/lib/printplekken.d.ts +3 -1
  48. package/dist-lib/lib/printplekken.d.ts.map +1 -1
  49. package/dist-lib/lib/printplekken.js +6 -3
  50. package/dist-lib/lib/queueTick.d.ts.map +1 -1
  51. package/dist-lib/lib/queueTick.js +9 -0
  52. package/dist-lib/lib/runnerRegistry.server.d.ts +5 -0
  53. package/dist-lib/lib/runnerRegistry.server.d.ts.map +1 -1
  54. package/dist-lib/lib/runnerRegistry.server.js +22 -1
  55. package/dist-lib/lib/shellPoort.d.ts +21 -0
  56. package/dist-lib/lib/shellPoort.d.ts.map +1 -0
  57. package/dist-lib/lib/shellPoort.js +43 -0
  58. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ export interface PlekComputerRij {
2
+ id: string;
3
+ print_plek_id: string;
4
+ computer_naam: string;
5
+ printnode_computer_id: number | string | null;
6
+ }
7
+ export interface LiveComputer {
8
+ id: string;
9
+ naam: string;
10
+ online: boolean;
11
+ }
12
+ export type ComputerToestand = {
13
+ soort: "gekoppeld";
14
+ computer: LiveComputer;
15
+ }
16
+ /** Nog geen id: print door op de naam, maar toont status onbekend. */
17
+ | {
18
+ soort: "geen_id";
19
+ }
20
+ /** Id bestaat niet meer, wel een computer met dezelfde naam (opnieuw geïnstalleerd). */
21
+ | {
22
+ soort: "zelfde_naam";
23
+ kandidaat: LiveComputer;
24
+ }
25
+ /** Id bestaat niet meer en er is geen eenduidige vervanger. */
26
+ | {
27
+ soort: "verdwenen";
28
+ };
29
+ export declare function toestandVanComputer(rij: PlekComputerRij, live: LiveComputer[]): ComputerToestand;
30
+ export declare const STATUS_ONBEKEND_TEKST = "Status onbekend \u2013 koppel deze computer opnieuw";
31
+ export declare const zelfdeNaamTekst: (naam: string) => string;
32
+ export interface KoppelVoorstelRij {
33
+ rij_id: string;
34
+ print_plek_id: string;
35
+ computer_naam: string;
36
+ huidig_id: string | null;
37
+ gevonden_ids: string[];
38
+ eenduidig: boolean;
39
+ reden: string;
40
+ }
41
+ /**
42
+ * Voorstel voor de eenmalige vulling. Alleen eenduidig als er precies één
43
+ * PrintNode-computer met exact dezelfde (getrimde) naam is en dat id nog niet
44
+ * bij een andere rij hoort.
45
+ */
46
+ export declare function maakKoppelVoorstel(rijen: PlekComputerRij[], live: LiveComputer[]): KoppelVoorstelRij[];
47
+ //# sourceMappingURL=computerKoppeling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computerKoppeling.d.ts","sourceRoot":"","sources":["../../src/lib/computerKoppeling.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE;AAChD,sEAAsE;GACpE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE;AACtB,wFAAwF;GACtF;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,YAAY,CAAA;CAAE;AACnD,+DAA+D;GAC7D;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAI3B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAShG;AAED,eAAO,MAAM,qBAAqB,wDAAmD,CAAC;AACtF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,WACyB,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAoBtG"}
@@ -0,0 +1,48 @@
1
+ // ============================================================================
2
+ // src/lib/computerKoppeling.ts — computers op een printplek koppelen op het
3
+ // vaste PrintNode-computer-id. Pure logica, zonder database of netwerk.
4
+ // ============================================================================
5
+ const norm = (s) => (s ?? "").trim();
6
+ export function toestandVanComputer(rij, live) {
7
+ const lijst = Array.isArray(live) ? live : [];
8
+ const id = rij.printnode_computer_id == null ? "" : String(rij.printnode_computer_id);
9
+ if (!id)
10
+ return { soort: "geen_id" };
11
+ const op = lijst.find((c) => String(c.id) === id);
12
+ if (op)
13
+ return { soort: "gekoppeld", computer: op };
14
+ const zelfde = lijst.filter((c) => norm(c.naam) === norm(rij.computer_naam));
15
+ if (zelfde.length === 1)
16
+ return { soort: "zelfde_naam", kandidaat: zelfde[0] };
17
+ return { soort: "verdwenen" };
18
+ }
19
+ export const STATUS_ONBEKEND_TEKST = "Status onbekend – koppel deze computer opnieuw";
20
+ export const zelfdeNaamTekst = (naam) => `Er is een computer met dezelfde naam gevonden: ${naam}. Koppelen?`;
21
+ /**
22
+ * Voorstel voor de eenmalige vulling. Alleen eenduidig als er precies één
23
+ * PrintNode-computer met exact dezelfde (getrimde) naam is en dat id nog niet
24
+ * bij een andere rij hoort.
25
+ */
26
+ export function maakKoppelVoorstel(rijen, live) {
27
+ const lijst = Array.isArray(live) ? live : [];
28
+ const veilig = Array.isArray(rijen) ? rijen : [];
29
+ const alInGebruik = new Set(veilig.filter((r) => r.printnode_computer_id != null).map((r) => String(r.printnode_computer_id)));
30
+ return veilig.map((r) => {
31
+ const huidig = r.printnode_computer_id == null ? null : String(r.printnode_computer_id);
32
+ const gevonden = lijst.filter((c) => norm(c.naam) === norm(r.computer_naam)).map((c) => String(c.id));
33
+ if (huidig) {
34
+ return { rij_id: r.id, print_plek_id: r.print_plek_id, computer_naam: r.computer_naam, huidig_id: huidig, gevonden_ids: gevonden, eenduidig: false, reden: "Heeft al een id" };
35
+ }
36
+ let reden = "Eenduidig";
37
+ let eenduidig = false;
38
+ if (gevonden.length === 0)
39
+ reden = "Geen PrintNode-computer met deze naam";
40
+ else if (gevonden.length > 1)
41
+ reden = "Meerdere PrintNode-computers met deze naam";
42
+ else if (alInGebruik.has(gevonden[0]))
43
+ reden = "Dit id hoort al bij een andere computer";
44
+ else
45
+ eenduidig = true;
46
+ return { rij_id: r.id, print_plek_id: r.print_plek_id, computer_naam: r.computer_naam, huidig_id: null, gevonden_ids: gevonden, eenduidig, reden };
47
+ });
48
+ }
@@ -15,6 +15,14 @@ export type EtiketUitkomst = {
15
15
  bericht: string;
16
16
  };
17
17
  export declare const maatTekst: (b: number, h: number) => string;
18
+ /** Leesbare maat voor de gebruiker: "25,1 × 88,9 mm". */
19
+ export declare const maatNl: (b: number, h: number) => string;
20
+ /** "99010 Standard Address (25,1 × 88,9 mm)". */
21
+ export declare const etiketTekst: (e: {
22
+ naam: string;
23
+ breedte_mm: number;
24
+ hoogte_mm: number;
25
+ }) => string;
18
26
  /** Leest een opgeslagen geladen etiket; ongeldig = null. */
19
27
  export declare function leesGeladenEtiket(v: unknown): GeladenEtiket | null;
20
28
  /** PrintNode-formaten (tienden mm) als keuzelijst in mm, zonder lege maten. */
@@ -1 +1 @@
1
- {"version":3,"file":"etiketControle.d.ts","sourceRoot":"","sources":["../../src/lib/etiketControle.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKtF,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,WAA2B,CAAC;AAE1E,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAQlE;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,EAAE,CAW7D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAClE,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,WAAW,EAAE,MAAM,GAClB,cAAc,CAgChB;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAa/F"}
1
+ {"version":3,"file":"etiketControle.d.ts","sourceRoot":"","sources":["../../src/lib/etiketControle.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKtF,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,WAA2B,CAAC;AAC1E,yDAAyD;AACzD,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,WACmC,CAAC;AAC/E,iDAAiD;AACjD,eAAO,MAAM,WAAW,GAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,WAC3B,CAAC;AAG5D,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAQlE;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,EAAE,CAW7D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAClE,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,WAAW,EAAE,MAAM,GAClB,cAAc,CA6BhB;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAa/F"}
@@ -9,6 +9,11 @@
9
9
  const MARGE_MM = 2;
10
10
  const mm = (n) => Math.round(n * 10) / 10;
11
11
  export const maatTekst = (b, h) => `${mm(b)}×${mm(h)} mm`;
12
+ /** Leesbare maat voor de gebruiker: "25,1 × 88,9 mm". */
13
+ export const maatNl = (b, h) => `${String(mm(b)).replace(".", ",")} × ${String(mm(h)).replace(".", ",")} mm`;
14
+ /** "99010 Standard Address (25,1 × 88,9 mm)". */
15
+ export const etiketTekst = (e) => `${e.naam.trim()} (${maatNl(e.breedte_mm, e.hoogte_mm)})`;
16
+ const heel = (b, h) => `${Math.round(b)} × ${Math.round(h)} mm`;
12
17
  /** Leest een opgeslagen geladen etiket; ongeldig = null. */
13
18
  export function leesGeladenEtiket(v) {
14
19
  if (!v || typeof v !== "object")
@@ -46,7 +51,7 @@ export function etiketPast(doc, geladen, printerNaam) {
46
51
  return {
47
52
  ok: false,
48
53
  code: "GEEN_GELADEN_ETIKET",
49
- bericht: `Stel eerst het geladen etiket in voor labelprinter ${printerNaam}.`,
54
+ bericht: `Er is nog niet ingesteld welk etiket in labelprinter ${printerNaam} zit.`,
50
55
  };
51
56
  }
52
57
  const { breedte_mm: b, hoogte_mm: h } = doc;
@@ -56,7 +61,7 @@ export function etiketPast(doc, geladen, printerNaam) {
56
61
  return {
57
62
  ok: false,
58
63
  code: "FORMAAT_PAST_NIET",
59
- bericht: `${doc.soortLabel} ${maatTekst(b, h)} past niet op het geladen etiket ${maatTekst(geladen.breedte_mm, geladen.hoogte_mm)} van labelprinter ${printerNaam}.`,
64
+ bericht: `Past niet op het etiket in de printer (${heel(b, h)} op ${heel(geladen.breedte_mm, geladen.hoogte_mm)}).`,
60
65
  };
61
66
  }
62
67
  const docLiggend = b > h;
@@ -10,6 +10,12 @@ export interface DubbelOrigineel {
10
10
  * documentsoort) en geeft het bestaande opdracht-id, de printer en de tijd.
11
11
  */
12
12
  export declare function leesDubbelOrigineel(err: unknown): DubbelOrigineel | null;
13
+ /**
14
+ * Zet een bekende technische melding om naar een zin voor de gebruiker.
15
+ * Geeft null als de melding niet bekend is. De oorspronkelijke melding blijft
16
+ * bewaard en is alleen onder "Details voor beheer" te zien.
17
+ */
18
+ export declare function gebruikersTekst(melding: unknown, soortLabel?: (t: string) => string): string | null;
13
19
  /** Maakt van een (Supabase-)fout een zin die de gebruiker zelf kan herleiden. */
14
20
  export declare function leesbareFout(err: unknown, prefix?: string): string;
15
21
  //# sourceMappingURL=foutTekst.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"foutTekst.d.ts","sourceRoot":"","sources":["../../src/lib/foutTekst.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAkBxE;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,SAAoB,GAAG,MAAM,CAgC7E"}
1
+ {"version":3,"file":"foutTekst.d.ts","sourceRoot":"","sources":["../../src/lib/foutTekst.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAkBxE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CA6BnG;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,SAAoB,GAAG,MAAM,CA2B7E"}
@@ -25,15 +25,52 @@ export function leesDubbelOrigineel(err) {
25
25
  return { jobId: null, printerId: null, aangemaaktOp: null };
26
26
  }
27
27
  }
28
+ /**
29
+ * Zet een bekende technische melding om naar een zin voor de gebruiker.
30
+ * Geeft null als de melding niet bekend is. De oorspronkelijke melding blijft
31
+ * bewaard en is alleen onder "Details voor beheer" te zien.
32
+ */
33
+ export function gebruikersTekst(melding, soortLabel) {
34
+ const m = String(melding ?? "").trim();
35
+ if (!m)
36
+ return null;
37
+ if (m.includes("FORMAAT_PAST_NIET")) {
38
+ if (m.includes("Past niet op het etiket"))
39
+ return m.replace(/^[A-Z_]+:\s*/, "");
40
+ const maten = [...m.matchAll(/(\d+(?:[.,]\d+)?)\s*[×x]\s*(\d+(?:[.,]\d+)?)\s*mm/g)].map((x) => `${Math.round(Number(x[1].replace(",", ".")))} × ${Math.round(Number(x[2].replace(",", ".")))} mm`);
41
+ return maten.length >= 2
42
+ ? `Past niet op het etiket in de printer (${maten[0]} op ${maten[1]}).`
43
+ : "Past niet op het etiket in de printer.";
44
+ }
45
+ if (m.includes("GEEN_GELADEN_ETIKET"))
46
+ return "Er is nog niet ingesteld welk etiket in de labelprinter zit.";
47
+ if (m.includes("GEEN_PRINTER")) {
48
+ const plek = m.match(/printplek '([^']*)'/)?.[1];
49
+ const type = m.match(/documenttype '([^']*)'/)?.[1];
50
+ const soort = type ? (soortLabel ? soortLabel(type) : type) : "dit document";
51
+ return `Er is geen printer ingesteld voor ‘${soort}’${plek ? ` op printplek ‘${plek}’` : ""}. Stel er een in bij Printen › Printplekken.`;
52
+ }
53
+ if (m.includes("DUBBEL_ORIGINEEL") || m.includes("print_jobs_een_origineel_per_kar")) {
54
+ return "Deze kar is al geprint. Gebruik ‘Opnieuw printen’.";
55
+ }
56
+ if (/layout_variant/i.test(m)) {
57
+ return "De pakbon wacht nog op de karindeling en wordt automatisch geprint zodra die klaar is.";
58
+ }
59
+ if (/Restpakbon zonder restregels/i.test(m)) {
60
+ return "De restpakbon is leeg (geen resterende fusten); er is niets geprint.";
61
+ }
62
+ return null;
63
+ }
28
64
  /** Maakt van een (Supabase-)fout een zin die de gebruiker zelf kan herleiden. */
29
65
  export function leesbareFout(err, prefix = "Opslaan mislukt") {
30
66
  const e = (err ?? {});
31
67
  const msg = String(e.message ?? (typeof err === "string" ? err : "")).trim();
32
68
  const dubbel = leesDubbelOrigineel(err);
33
- if (dubbel) {
34
- const tijd = dubbel.aangemaaktOp ? new Date(dubbel.aangemaaktOp).toLocaleString("nl-NL") : "eerder";
35
- return `${prefix}: voor deze kar is al een origineel gemaakt (opdracht ${dubbel.jobId ?? "?"}, ${tijd}). Gebruik "Opnieuw printen" voor een herprint.`;
36
- }
69
+ if (dubbel)
70
+ return "Deze kar is al geprint. Gebruik ‘Opnieuw printen’.";
71
+ const bekend = gebruikersTekst(msg);
72
+ if (bekend)
73
+ return bekend;
37
74
  if (msg.includes("PRINTER_NIET_OP_PLEK")) {
38
75
  const m = msg.match(/werkplek\s+(.+?)\.?$/);
39
76
  return `${prefix}: deze printer is niet gekoppeld aan de printplek${m ? ` van werkplek ${m[1]}` : ""}. Koppel hem eerst aan de printplek.`;
@@ -50,16 +87,9 @@ export function leesbareFout(err, prefix = "Opslaan mislukt") {
50
87
  return `${prefix}: de gekozen printer of plek bestaat niet (meer).`;
51
88
  if (/failed to fetch|network/i.test(msg))
52
89
  return `${prefix}: geen verbinding met de server.`;
53
- if (msg)
54
- return `${prefix}: ${msg.replace(/^[A-Z_]+:\s*/, "")}`;
55
- const extra = [e.details, e.hint, e.code ? `code ${e.code}` : ""].filter(Boolean).join(" — ");
56
- if (extra)
57
- return `${prefix}: ${extra}`;
58
- try {
59
- const ruw = JSON.stringify(err);
60
- if (ruw && ruw !== "{}" && ruw !== "null")
61
- return `${prefix}: ${ruw.slice(0, 300)}`;
62
- }
63
- catch { /* niets */ }
64
- return `${prefix} (geen reden ontvangen).`;
90
+ // Een gewone zin (geen code, geen JSON) mag de gebruiker zien.
91
+ const zin = msg.replace(/^[A-Z_]+:\s*/, "");
92
+ if (zin && !/^[A-Z0-9_]+$/.test(zin) && !/^[\[{]/.test(zin) && !/\b[A-Z]{2,}_[A-Z_]+\b/.test(zin))
93
+ return `${prefix}: ${zin}`;
94
+ return `${prefix}. Probeer het opnieuw; blijft het, meld het bij kantoor.`;
65
95
  }
@@ -112,7 +112,7 @@ export async function zetVerwijzingOm(v, nieuwLayoutId) {
112
112
  export const BRON_LABEL = {
113
113
  eigen_layout: "eigen layout",
114
114
  extern_pdf: "aangeleverd document",
115
- floriday_1op1: "Floriday-document (1-op-1)",
115
+ floriday_1op1: "Origineel Floriday-document",
116
116
  render_html: "aangeleverde opmaak",
117
117
  klantlayout: "klantlayout",
118
118
  onbekend: "onbekend",
@@ -1,5 +1,5 @@
1
1
  import { type DubbelOrigineel } from "./foutTekst.js";
2
- import type { DocumentType } from "./documentTypes.js";
2
+ import { type DocumentType } from "./documentTypes.js";
3
3
  export interface PrintDocumentInput {
4
4
  /** Documentsoort, bijv. "pakbon" of "productiebon". */
5
5
  documenttype: DocumentType | string;
@@ -1 +1 @@
1
- {"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { supabase } from "./supabaseClient.js";
8
8
  import { printplekNaam, printplekVoorComputer } from "./printplekken.js";
9
9
  import { routeringVoor } from "./printRoutering.js";
10
10
  import { bronVoorDocument } from "./documentBron.js";
11
+ import { documentTypeLabel } from "./documentTypes.js";
11
12
  const arr = (v) => (Array.isArray(v) ? v : []);
12
13
  /** Zoekt de te gebruiken layout: expliciet, anders standaard, anders de nieuwste. */
13
14
  async function bepaalLayout(documenttype, layoutId) {
@@ -116,7 +117,7 @@ export class DubbeleAanvraagFout extends Error {
116
117
  */
117
118
  export class DubbelOrigineelFout extends Error {
118
119
  constructor(d) {
119
- super(`DUBBEL_ORIGINEEL: voor deze kar is al een origineel gemaakt (opdracht ${d.jobId ?? "?"}). Gebruik een herprint.`);
120
+ super("Deze kar is al geprint. Gebruik ‘Opnieuw printen’.");
120
121
  this.name = "DubbelOrigineelFout";
121
122
  this.code = "DUBBEL_ORIGINEEL";
122
123
  this.bestaandJobId = d.jobId;
@@ -180,12 +181,12 @@ async function geenPrinterMelding(documenttype, printplekId, werkplek) {
180
181
  const plek = printplekId ?? (werkplek ? await printplekVoorComputer(werkplek) : null);
181
182
  const naam = plek ? await printplekNaam(plek) : null;
182
183
  if (naam) {
183
- return `Geen printer voor ${documenttype} op ${naam} — stel dit in bij Printplekken.`;
184
+ return `Er is geen printer ingesteld voor ‘${documentTypeLabel(documenttype)}’ op printplek ‘${naam}’. Stel er een in bij Printen › Printplekken.`;
184
185
  }
185
186
  if (werkplek) {
186
- return `Geen printer voor ${documenttype} op werkplek ${werkplek} — koppel deze werkplek aan een printplek en kies daar een printer.`;
187
+ return `Er is geen printer ingesteld voor ‘${documentTypeLabel(documenttype)}’ op werkplek ‘${werkplek}’. Koppel deze werkplek bij Printen › Printplekken.`;
187
188
  }
188
- return `Geen printer voor ${documenttype} — stel dit in bij Layouts en printers → Routering.`;
189
+ return `Er is geen printer ingesteld voor ‘${documentTypeLabel(documenttype)}’. Stel er een in bij Printen › Printplekken.`;
189
190
  }
190
191
  /**
191
192
  * Zet een document in de printwachtrij. Bedoeld voor gebruik vanuit andere
@@ -1 +1 @@
1
- {"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAsC5D,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,mFAAmF;AACnF,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEpD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW1E;AAoDD,2EAA2E;AAC3E,qBAAa,gBAAiB,SAAQ,KAAK;IAChC,IAAI,SAAsB;CACpC;AAED,+EAA+E;AAC/E,qBAAa,iBAAkB,SAAQ,KAAK;IACjC,IAAI,SAAuB;CACrC;AAED,oFAAoF;AACpF,qBAAa,kBAAmB,SAAQ,gBAAgB;IAC7C,IAAI,SAAwB;CACtC;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvE,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;AAE5G,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAcnD,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAI7D;AASD,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAQnD;AAkCD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAIlE;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAe7C;AA8ND;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQlH;AAWD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqClF;AA8SD;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,MAAM,CAAC,CAkajB;AAGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AAqBD,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAsCzG;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,OAAO,EAAE,MAAM,iBAiBxH;AAgVD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAOD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGlG;AAqID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA2BD,oFAAoF;AACpF,wBAAsB,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,SAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8GtF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,GAAG,GACP,OAAO,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA6B1D"}
@@ -853,7 +853,7 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
853
853
  : "kar";
854
854
  const engineVariant = job.layout_variant ?? p.layout_variant ?? p.layoutVariant ?? p.data?.layout_variant ?? null;
855
855
  if (isEngineOpdracht(job) && pakbonMethode === "beide" && !["full_cart", "partial_order"].includes(String(engineVariant ?? ""))) {
856
- throw new WachtOpLayoutFout("Wacht op layout_variant van de Logistics Engine: kies full_cart of partial_order.");
856
+ throw new WachtOpLayoutFout("De pakbon wacht nog op de karindeling en wordt automatisch geprint zodra die klaar is.");
857
857
  }
858
858
  // Barcode en kargegevens van de Engine mogen niet verloren gaan wanneer
859
859
  // de ordergegevens uit een subobject komen.
@@ -936,7 +936,7 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
936
936
  // verzameld moet worden. Dan liever geen pakbon dan een pakbon met de
937
937
  // volledige karinhoud erop.
938
938
  if (pakbonLayoutVariant(engineVariant) === "partial_order" && !deelkarRegels(order).length) {
939
- throw new EngineContractFout("Restpakbon zonder restregels: stuur de resterende regels mee als cart_items.");
939
+ throw new EngineContractFout("De restpakbon is leeg (geen resterende fusten); er is niets geprint.");
940
940
  }
941
941
  const cartId = engineCartId;
942
942
  const karren = Array.isArray(order.karren) ? order.karren : [];
@@ -1755,6 +1755,20 @@ export async function verwerkWachtrij(db, max = 5) {
1755
1755
  // Begrensd parallel: meerdere pakbonnen van één order lopen gelijktijdig,
1756
1756
  // maar één mislukte opdracht annuleert de andere nooit.
1757
1757
  const jobs = [...pdfJobs, ...gewoneJobs];
1758
+ // Vastleggen welke installatie (en versie) deze opdrachten verwerkt.
1759
+ if (jobs.length > 0) {
1760
+ try {
1761
+ const { eigenBasisUrl } = await import("./runnerRegistry.server.js");
1762
+ const { MODULE_VERSIE } = await import("./shellPoort.js");
1763
+ await db
1764
+ .from("print_jobs")
1765
+ .update({ verwerkt_door_runner: eigenBasisUrl(), verwerkt_met_versie: MODULE_VERSIE })
1766
+ .in("id", jobs.map((j) => j.id));
1767
+ }
1768
+ catch {
1769
+ /* vastleggen mag het printen nooit blokkeren */
1770
+ }
1771
+ }
1758
1772
  const uitkomsten = await metPool(jobs, JOB_PARALLEL, async (job) => {
1759
1773
  try {
1760
1774
  return await verwerkJob(db, job);
@@ -134,6 +134,7 @@ export declare const webhookStatus: import("@tanstack/start-client-core").Option
134
134
  claims: import("@supabase/auth-js").JwtPayload;
135
135
  }, undefined, undefined, undefined>], undefined, Promise<{
136
136
  meldingen: {
137
+ weergave: string;
137
138
  ontvangen_op: string;
138
139
  http_status: number;
139
140
  soorten: string[];
@@ -173,4 +174,132 @@ export declare const webhookOpnieuwKoppelen: import("@tanstack/start-client-core
173
174
  ok: false;
174
175
  reden: string;
175
176
  }>>;
177
+ /**
178
+ * Printinstallaties en of de Shell print. Alleen beheerders zien de lijst;
179
+ * iedereen ziet de stilstandmelding.
180
+ */
181
+ export declare const printInstallaties: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
182
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
183
+ userId: string;
184
+ claims: import("@supabase/auth-js").JwtPayload;
185
+ }, undefined, undefined, undefined>], undefined, Promise<{
186
+ installaties: [];
187
+ stil: true;
188
+ reden: "geen_shell_adres";
189
+ sinds: null;
190
+ ok: true;
191
+ beheer: false;
192
+ } | {
193
+ installaties: [];
194
+ stil: true;
195
+ reden: "shell_niet_aangemeld";
196
+ sinds: null;
197
+ ok: true;
198
+ beheer: false;
199
+ } | {
200
+ installaties: [];
201
+ stil: true;
202
+ reden: "shell_reageert_niet";
203
+ sinds: string;
204
+ ok: true;
205
+ beheer: false;
206
+ } | {
207
+ installaties: [];
208
+ stil: false;
209
+ reden: null;
210
+ sinds: null;
211
+ ok: true;
212
+ beheer: false;
213
+ } | {
214
+ installaties: {
215
+ adres: string;
216
+ versie: string | null;
217
+ laatstActief: string | null;
218
+ actief: boolean;
219
+ isShell: boolean;
220
+ opdrachten7d: any;
221
+ }[];
222
+ stil: true;
223
+ reden: "geen_shell_adres";
224
+ sinds: null;
225
+ ok: true;
226
+ beheer: true;
227
+ } | {
228
+ installaties: {
229
+ adres: string;
230
+ versie: string | null;
231
+ laatstActief: string | null;
232
+ actief: boolean;
233
+ isShell: boolean;
234
+ opdrachten7d: any;
235
+ }[];
236
+ stil: true;
237
+ reden: "shell_niet_aangemeld";
238
+ sinds: null;
239
+ ok: true;
240
+ beheer: true;
241
+ } | {
242
+ installaties: {
243
+ adres: string;
244
+ versie: string | null;
245
+ laatstActief: string | null;
246
+ actief: boolean;
247
+ isShell: boolean;
248
+ opdrachten7d: any;
249
+ }[];
250
+ stil: true;
251
+ reden: "shell_reageert_niet";
252
+ sinds: string;
253
+ ok: true;
254
+ beheer: true;
255
+ } | {
256
+ installaties: {
257
+ adres: string;
258
+ versie: string | null;
259
+ laatstActief: string | null;
260
+ actief: boolean;
261
+ isShell: boolean;
262
+ opdrachten7d: any;
263
+ }[];
264
+ stil: false;
265
+ reden: null;
266
+ sinds: null;
267
+ ok: true;
268
+ beheer: true;
269
+ }>>;
270
+ /** Stap A: alleen lezen. Voorstel per printplek-computer. */
271
+ export declare const computerKoppelVoorstel: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
272
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
273
+ userId: string;
274
+ claims: import("@supabase/auth-js").JwtPayload;
275
+ }, undefined, undefined, undefined>], undefined, Promise<{
276
+ ok: false;
277
+ fout: any;
278
+ rijen: [];
279
+ } | {
280
+ ok: true;
281
+ rijen: import("./computerKoppeling.js").KoppelVoorstelRij[];
282
+ fout?: undefined;
283
+ }>>;
284
+ /**
285
+ * Koppelt één printplek-computer aan een PrintNode-id (stap B per rij, of de
286
+ * knop "Koppelen"). Controleert live dat het id bestaat en dezelfde naam heeft.
287
+ */
288
+ export declare const koppelComputerOpId: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
289
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
290
+ userId: string;
291
+ claims: import("@supabase/auth-js").JwtPayload;
292
+ }, undefined, undefined, undefined>], (d: {
293
+ rijId: string;
294
+ printnodeId: string;
295
+ }) => {
296
+ rijId: string;
297
+ printnodeId: string;
298
+ }, Promise<{
299
+ ok: false;
300
+ fout: any;
301
+ } | {
302
+ ok: true;
303
+ fout?: undefined;
304
+ }>>;
176
305
  //# sourceMappingURL=printService.functions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printService.functions.d.ts","sourceRoot":"","sources":["../../src/lib/printService.functions.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe;;;;;;;;;;;;GASxB,CAAC;AAEL,eAAO,MAAM,qBAAqB;;;;8CAER;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;GAmBC,CAAC;AAEL,eAAO,MAAM,WAAW;;;;8CAEE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAU7C,CAAC;AAEL,eAAO,MAAM,uBAAuB;;;;+CAET;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;;;;;;GAqE5C,CAAC;AAEL,eAAO,MAAM,gBAAgB;;;;;;;;;;;;GAYzB,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;GAUnC,CAAC;AAEL,oFAAoF;AACpF,eAAO,MAAM,cAAc;;;;iFAgBvB,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;8CAED;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAyDvC,CAAC;AAEL,qDAAqD;AACrD,eAAO,MAAM,aAAa;;;;;;sBAYJ,MAAM;qBAAe,MAAM;iBAAW,MAAM,EAAE;uBAAiB,MAAM,EAAE;kBAAY,MAAM;uBAAiB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;GAMpI,CAAC;AAEL,qEAAqE;AACrE,eAAO,MAAM,sBAAsB;;;;;;;;;;GAoB/B,CAAC"}
1
+ {"version":3,"file":"printService.functions.d.ts","sourceRoot":"","sources":["../../src/lib/printService.functions.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe;;;;;;;;;;;;GASxB,CAAC;AAEL,eAAO,MAAM,qBAAqB;;;;8CAER;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;GAmBC,CAAC;AAEL,eAAO,MAAM,WAAW;;;;8CAEE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAU7C,CAAC;AAEL,eAAO,MAAM,uBAAuB;;;;+CAET;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;;;;;;GAqE5C,CAAC;AAEL,eAAO,MAAM,gBAAgB;;;;;;;;;;;;GAYzB,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;GAUnC,CAAC;AAEL,oFAAoF;AACpF,eAAO,MAAM,cAAc;;;;iFAgBvB,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;8CAED;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAyDvC,CAAC;AAEL,qDAAqD;AACrD,eAAO,MAAM,aAAa;;;;;;;sBAaJ,MAAM;qBAAe,MAAM;iBAAW,MAAM,EAAE;uBAAiB,MAAM,EAAE;kBAAY,MAAM;uBAAiB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;GAMpI,CAAC;AAEL,qEAAqE;AACrE,eAAO,MAAM,sBAAsB;;;;;;;;;;GAoB/B,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqD1B,CAAC;AAeL,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;GAiB/B,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;0CAET;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;;;;;;;;;GAqBxD,CAAC"}