@flowselections/layout-maker 1.36.7 → 1.45.8

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 (123) hide show
  1. package/dist-lib/components/AfleverbriefBuilderPage.d.ts +10 -0
  2. package/dist-lib/components/AfleverbriefBuilderPage.d.ts.map +1 -0
  3. package/dist-lib/components/AfleverbriefBuilderPage.js +101 -0
  4. package/dist-lib/components/BlokOntwerperPage.d.ts.map +1 -1
  5. package/dist-lib/components/BlokOntwerperPage.js +8 -3
  6. package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
  7. package/dist-lib/components/ComputersLijst.js +1 -1
  8. package/dist-lib/components/FustKolomVolgorde.d.ts +11 -0
  9. package/dist-lib/components/FustKolomVolgorde.d.ts.map +1 -0
  10. package/dist-lib/components/FustKolomVolgorde.js +52 -0
  11. package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
  12. package/dist-lib/components/LayoutsPage.js +10 -9
  13. package/dist-lib/components/PaginaDocument.d.ts +4 -1
  14. package/dist-lib/components/PaginaDocument.d.ts.map +1 -1
  15. package/dist-lib/components/PaginaDocument.js +10 -5
  16. package/dist-lib/components/PakbonBuilderPage.d.ts.map +1 -1
  17. package/dist-lib/components/PakbonBuilderPage.js +34 -14
  18. package/dist-lib/components/PakbonPreview.d.ts +4 -2
  19. package/dist-lib/components/PakbonPreview.d.ts.map +1 -1
  20. package/dist-lib/components/PakbonPreview.js +74 -24
  21. package/dist-lib/components/PakbonSectiesPanel.d.ts +5 -3
  22. package/dist-lib/components/PakbonSectiesPanel.d.ts.map +1 -1
  23. package/dist-lib/components/PakbonSectiesPanel.js +8 -5
  24. package/dist-lib/components/PdfMapToestemmingBanner.d.ts +2 -1
  25. package/dist-lib/components/PdfMapToestemmingBanner.d.ts.map +1 -1
  26. package/dist-lib/components/PdfMapToestemmingBanner.js +73 -14
  27. package/dist-lib/components/PdfVoorbeeld.d.ts +20 -0
  28. package/dist-lib/components/PdfVoorbeeld.d.ts.map +1 -0
  29. package/dist-lib/components/PdfVoorbeeld.js +95 -0
  30. package/dist-lib/components/PrintProgrammaUitleg.d.ts.map +1 -1
  31. package/dist-lib/components/PrintProgrammaUitleg.js +1 -1
  32. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  33. package/dist-lib/components/PrintQueuePage.js +81 -43
  34. package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
  35. package/dist-lib/components/PrintplekDetailPage.js +2 -2
  36. package/dist-lib/components/PrintplekWizard.d.ts.map +1 -1
  37. package/dist-lib/components/PrintplekWizard.js +6 -2
  38. package/dist-lib/components/ProductiebonBuilderPage.d.ts.map +1 -1
  39. package/dist-lib/components/ProductiebonBuilderPage.js +13 -7
  40. package/dist-lib/index.d.ts +16 -6
  41. package/dist-lib/index.d.ts.map +1 -1
  42. package/dist-lib/index.js +11 -5
  43. package/dist-lib/integrations/supabase/auth-middleware.d.ts +3585 -1267
  44. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  45. package/dist-lib/integrations/supabase/client.server.d.ts +3585 -1267
  46. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  47. package/dist-lib/integrations/supabase/moduleClient.d.ts +25898 -0
  48. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -0
  49. package/dist-lib/integrations/supabase/moduleClient.js +29 -0
  50. package/dist-lib/integrations/supabase/types.d.ts +3607 -1265
  51. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  52. package/dist-lib/integrations/supabase/types.js +1 -0
  53. package/dist-lib/lib/aiLayout.functions.d.ts +3585 -1267
  54. package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
  55. package/dist-lib/lib/code128.d.ts +5 -0
  56. package/dist-lib/lib/code128.d.ts.map +1 -0
  57. package/dist-lib/lib/code128.js +51 -0
  58. package/dist-lib/lib/documentVoorbeeld.functions.d.ts +23 -0
  59. package/dist-lib/lib/documentVoorbeeld.functions.d.ts.map +1 -0
  60. package/dist-lib/lib/documentVoorbeeld.functions.js +37 -0
  61. package/dist-lib/lib/fontMetrics.d.ts +15 -0
  62. package/dist-lib/lib/fontMetrics.d.ts.map +1 -0
  63. package/dist-lib/lib/fontMetrics.js +118 -0
  64. package/dist-lib/lib/htmlNaarPdf.server.d.ts +2 -2
  65. package/dist-lib/lib/htmlNaarPdf.server.d.ts.map +1 -1
  66. package/dist-lib/lib/htmlNaarPdf.server.js +2 -1
  67. package/dist-lib/lib/htmlPdf.server.d.ts +11 -0
  68. package/dist-lib/lib/htmlPdf.server.d.ts.map +1 -1
  69. package/dist-lib/lib/htmlPdf.server.js +170 -9
  70. package/dist-lib/lib/layoutPreview.d.ts.map +1 -1
  71. package/dist-lib/lib/layoutPreview.js +6 -3
  72. package/dist-lib/lib/orderData.server.d.ts.map +1 -1
  73. package/dist-lib/lib/orderData.server.js +49 -16
  74. package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts +39 -0
  75. package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts.map +1 -0
  76. package/dist-lib/lib/pakbonBarcodeVerzoek.js +80 -0
  77. package/dist-lib/lib/pakbonBuilder.d.ts +90 -5
  78. package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
  79. package/dist-lib/lib/pakbonBuilder.js +455 -58
  80. package/dist-lib/lib/pakbonContent.d.ts +41 -0
  81. package/dist-lib/lib/pakbonContent.d.ts.map +1 -0
  82. package/dist-lib/lib/pakbonContent.js +668 -0
  83. package/dist-lib/lib/pakbonDocument.d.ts +199 -0
  84. package/dist-lib/lib/pakbonDocument.d.ts.map +1 -0
  85. package/dist-lib/lib/pakbonDocument.js +735 -0
  86. package/dist-lib/lib/pakbonHtml.d.ts +21 -2
  87. package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
  88. package/dist-lib/lib/pakbonHtml.js +144 -36
  89. package/dist-lib/lib/pakbonPresentation.d.ts +8 -0
  90. package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -0
  91. package/dist-lib/lib/pakbonPresentation.js +31 -0
  92. package/dist-lib/lib/pakbonScan.d.ts +44 -0
  93. package/dist-lib/lib/pakbonScan.d.ts.map +1 -0
  94. package/dist-lib/lib/pakbonScan.js +87 -0
  95. package/dist-lib/lib/pdfJobSaver.d.ts +10 -6
  96. package/dist-lib/lib/pdfJobSaver.d.ts.map +1 -1
  97. package/dist-lib/lib/pdfJobSaver.js +302 -99
  98. package/dist-lib/lib/pdfMap.d.ts +37 -2
  99. package/dist-lib/lib/pdfMap.d.ts.map +1 -1
  100. package/dist-lib/lib/pdfMap.js +120 -7
  101. package/dist-lib/lib/pdfOpslagStatus.d.ts +23 -0
  102. package/dist-lib/lib/pdfOpslagStatus.d.ts.map +1 -0
  103. package/dist-lib/lib/pdfOpslagStatus.js +74 -0
  104. package/dist-lib/lib/printApi.d.ts +31 -0
  105. package/dist-lib/lib/printApi.d.ts.map +1 -1
  106. package/dist-lib/lib/printApi.js +62 -1
  107. package/dist-lib/lib/printQueue.server.d.ts +13 -0
  108. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  109. package/dist-lib/lib/printQueue.server.js +673 -96
  110. package/dist-lib/lib/printService.functions.d.ts +11840 -2568
  111. package/dist-lib/lib/printService.functions.d.ts.map +1 -1
  112. package/dist-lib/lib/profielHtml.d.ts.map +1 -1
  113. package/dist-lib/lib/profielHtml.js +8 -1
  114. package/dist-lib/lib/supabaseClient.d.ts +1 -3
  115. package/dist-lib/lib/supabaseClient.d.ts.map +1 -1
  116. package/dist-lib/lib/supabaseClient.js +4 -8
  117. package/dist-lib/lib/useDocumentData.d.ts +8 -0
  118. package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
  119. package/dist-lib/lib/useDocumentData.js +1 -1
  120. package/dist-lib/lib/voorbeeldPrint.d.ts +3 -0
  121. package/dist-lib/lib/voorbeeldPrint.d.ts.map +1 -1
  122. package/dist-lib/lib/voorbeeldPrint.js +65 -17
  123. package/package.json +9 -2
@@ -1,18 +1,19 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMemo, useRef, useState } from "react";
3
3
  import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Input, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, toast, } from "@flowselections/core";
4
- import { FileDown, RotateCcw, Search, XCircle } from "lucide-react";
4
+ import { FileDown, FolderOpen, RotateCcw, Save, Search, XCircle } from "lucide-react";
5
5
  import { bijgewerktTekst, useAutoRefresh } from "../lib/useAutoRefresh.js";
6
6
  import { PrintStatusBanner } from "./PrintStatusBanner.js";
7
7
  import { maakPrintJob, updateJobStatus, useLayouts, usePrinters, usePrintJobs, usePrintPlekNamen, } from "../lib/useDocumentData.js";
8
8
  import { printStatus } from "../lib/printService.functions.js";
9
9
  import { vraagWachtrijRonde } from "../lib/queueTickClient.js";
10
10
  import { documentTypeLabel } from "../lib/documentTypes.js";
11
- import { jobPlekLabel } from "../lib/printQueue.js";
12
- import { bewaarInPdfMap } from "../lib/pdfMap.js";
11
+ import { jobPlekLabel, jobPrintPlekId } from "../lib/printQueue.js";
12
+ import { kiesPdfMap, openInEigenTabblad } from "../lib/pdfMap.js";
13
+ import { bewaarPdfJobOpnieuw, downloadPdfJob } from "../lib/pdfJobSaver.js";
14
+ import { pdfOpslagLabel, isOpslagFout } from "../lib/pdfOpslagStatus.js";
13
15
  import { PdfMapAutoSaver } from "./PdfMapAutoSaver.js";
14
16
  import { PdfMapToestemmingBanner } from "./PdfMapToestemmingBanner.js";
15
- import { supabase } from "../lib/supabaseClient.js";
16
17
  const STATUS_VARIANT = {
17
18
  wachtend: "outline",
18
19
  bezig: "secondary",
@@ -27,14 +28,6 @@ const BRON_LABEL = {
27
28
  render_html: "meegestuurde opmaak",
28
29
  klantlayout: "klantlayout",
29
30
  };
30
- const LOKALE_PDF_LABEL = {
31
- gereed: "PDF gereed — lokaal opslaan",
32
- opgeslagen: "opgeslagen op Mac",
33
- map_ontbreekt: "PDF-map ontbreekt",
34
- toestemming_nodig: "maptoestemming nodig",
35
- schrijffout: "opslaan mislukt",
36
- timeout: "wachten op PDF verlopen",
37
- };
38
31
  /**
39
32
  * Heeft deze opdracht een kenmerk waarmee hij van andere orders te
40
33
  * onderscheiden is? Zo niet, dan valt de dubbelbescherming terug op het
@@ -44,10 +37,15 @@ function heeftOrderKenmerk(job) {
44
37
  const p = (job.payload ?? {});
45
38
  if (typeof p !== "object" || p === null)
46
39
  return false;
47
- return ["queue_item_id", "order_id", "ordernummer", "order_number", "orderId"].some((k) => {
48
- const w = p[k];
49
- return (typeof w === "string" && w.trim() !== "") || typeof w === "number";
50
- });
40
+ const gevuld = (w) => (typeof w === "string" && w.trim() !== "") || typeof w === "number";
41
+ if (["queue_item_id", "order_id", "ordernummer", "order_number", "orderId"].some((k) => gevuld(p[k]))) {
42
+ return true;
43
+ }
44
+ // Modules kunnen de order ook genest meesturen als payload.order / payload.data.order.
45
+ const genest = [p.order, p.data?.order];
46
+ return genest.some((o) => o !== null &&
47
+ typeof o === "object" &&
48
+ ["id", "order_id", "orderNumber", "ordernummer", "nummer"].some((k) => gevuld(o[k])));
51
49
  }
52
50
  export function PrintQueuePage() {
53
51
  const { jobs, loading, reload } = usePrintJobs();
@@ -56,9 +54,43 @@ export function PrintQueuePage() {
56
54
  const [zoek, setZoek] = useState("");
57
55
  const [status, setStatus] = useState("alle");
58
56
  const [plekFilter, setPlekFilter] = useState("alle");
57
+ const [opslagFilter, setOpslagFilter] = useState("alle");
59
58
  const [tickFout, setTickFout] = useState(null);
60
59
  const plekNamen = usePrintPlekNamen();
61
60
  const printerNaam = useMemo(() => new Map(printers.map((p) => [p.id, p.naam])), [printers]);
61
+ const pdfPrinter = printers.find((p) => p.afdrukmethode === "pdf");
62
+ /** Kies direct vanuit een foute opdracht de PDF-map op deze werkplek. */
63
+ const stelMapIn = async (printplekId) => {
64
+ if (!pdfPrinter) {
65
+ toast.error("Er is nog geen “Opslaan als PDF”-printer aangemaakt");
66
+ return;
67
+ }
68
+ const uitkomst = await kiesPdfMap(pdfPrinter.id, printplekId);
69
+ if (uitkomst.status === "gekozen") {
70
+ toast.success("Map gekozen", {
71
+ description: `PDF's worden opgeslagen in “${uitkomst.naam}”. De opdracht wordt opnieuw opgeslagen.`,
72
+ });
73
+ void reload(true);
74
+ }
75
+ else if (uitkomst.status === "iframe-geblokkeerd") {
76
+ toast.error("Map kiezen werkt niet in een iframe", {
77
+ description: "Open de app in een eigen tabblad.",
78
+ action: {
79
+ label: "Open in eigen tabblad",
80
+ onClick: () => openInEigenTabblad(printplekId),
81
+ },
82
+ duration: 15000,
83
+ });
84
+ }
85
+ else if (uitkomst.status === "niet-ondersteund") {
86
+ toast.error("Deze browser ondersteunt geen mapkeuze", {
87
+ description: "Gebruik Chrome, Edge of Safari op desktop.",
88
+ });
89
+ }
90
+ else if (uitkomst.status === "fout") {
91
+ toast.error("Map kiezen is mislukt", { description: uitkomst.melding });
92
+ }
93
+ };
62
94
  const layoutNaam = useMemo(() => new Map(layouts.map((l) => [l.id, l.naam])), [layouts]);
63
95
  /** Herkomstlabel per opdracht: printplek, anders pickstation of werkplek. */
64
96
  const plekPerJob = useMemo(() => {
@@ -76,6 +108,13 @@ export function PrintQueuePage() {
76
108
  return false;
77
109
  if (plekFilter !== "alle" && (plekPerJob.get(j.id) || "—") !== plekFilter)
78
110
  return false;
111
+ if (opslagFilter === "fout" && !isOpslagFout(j.lokale_pdf_status))
112
+ return false;
113
+ if (opslagFilter === "opgeslagen" && j.lokale_pdf_status !== "opgeslagen")
114
+ return false;
115
+ if (opslagFilter === "wacht" &&
116
+ !["wachtend", "genereren", "gereed", "bezig"].includes(j.lokale_pdf_status ?? ""))
117
+ return false;
79
118
  return true;
80
119
  });
81
120
  const tellingen = useMemo(() => {
@@ -115,38 +154,31 @@ export function PrintQueuePage() {
115
154
  await reload(true);
116
155
  };
117
156
  const bijgewerkt = useAutoRefresh(ronde, lopende ? 5000 : 20000);
118
- return (_jsxs("main", { className: "space-y-6 p-6", children: [_jsx(PdfMapAutoSaver, {}), _jsx(PdfMapToestemmingBanner, {}), _jsxs("div", { className: "flex flex-wrap items-end justify-between gap-4", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-xl font-semibold", children: "Printwachtrij" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Volg printopdrachten, herstart mislukte prints en print documenten opnieuw." })] }), _jsx("span", { className: "text-muted-foreground text-xs", children: bijgewerktTekst(bijgewerkt) })] }), _jsx(PrintStatusBanner, { fout: tickFout }), _jsx("div", { className: "grid gap-4 md:grid-cols-4", children: ["wachtend", "bezig", "voltooid", "mislukt"].map((s) => (_jsx(Card, { children: _jsxs(CardHeader, { className: "pb-2", children: [_jsx(CardDescription, { className: "capitalize", children: s }), _jsx(CardTitle, { className: "text-2xl", children: tellingen[s] ?? 0 })] }) }, s))) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Opdrachten" }), _jsx(CardDescription, { children: loading ? "Laden…" : `${gefilterd.length} opdrachten` })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-3 md:grid-cols-4", children: [_jsxs("div", { className: "relative md:col-span-2", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek op document of gebruiker", value: zoek, onChange: (e) => setZoek(e.target.value) })] }), _jsxs(Select, { value: status, onValueChange: setStatus, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle statussen" }), ["wachtend", "bezig", "voltooid", "mislukt", "geannuleerd"].map((s) => (_jsx(SelectItem, { value: s, children: s }, s)))] })] }), _jsxs(Select, { value: plekFilter, onValueChange: setPlekFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle printplekken" }), plekOpties.map((p) => (_jsx(SelectItem, { value: p, children: p }, p))), _jsx(SelectItem, { value: "\u2014", children: "Zonder printplek" })] })] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Document" }), _jsx(TableHead, { children: "Printplek" }), _jsx(TableHead, { children: "Layout (aangeleverd \u2192 gebruikt)" }), _jsx(TableHead, { children: "Printer" }), _jsx(TableHead, { children: "Status" }), _jsx(TableHead, { children: "Tijdstip" }), _jsx(TableHead, { className: "text-right", children: "Acties" })] }) }), _jsxs(TableBody, { children: [gefilterd.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 7, className: "py-10 text-center text-sm text-muted-foreground", children: "Geen printopdrachten." }) })), gefilterd.map((j) => (_jsxs(TableRow, { children: [_jsxs(TableCell, { children: [_jsx("span", { className: "font-medium", children: j.documentnaam ?? documentTypeLabel(j.documenttype) }), j.is_herprint && (_jsx(Badge, { variant: "outline", className: "ml-2", children: "herprint" })), !heeftOrderKenmerk(j) && (_jsx(Badge, { variant: "outline", className: "ml-2 text-amber-600", children: "geen orderkenmerk" })), j.foutmelding && (_jsx("span", { className: "block text-xs text-destructive", children: j.foutmelding })), j.lokale_pdf_fout && (_jsx("span", { className: "block text-xs text-destructive", children: j.lokale_pdf_fout }))] }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: plekPerJob.get(j.id) || "—" }), _jsxs(TableCell, { className: "text-sm text-muted-foreground", children: [_jsx("span", { title: "Aangeleverd door de module", children: j.layout_id ? layoutNaam.get(j.layout_id) ?? "Onbekende layout" : "geen" }), _jsxs("span", { className: "block text-xs", children: ["\u2192", " ", _jsx("span", { title: "Layout die de wachtrij gebruikte", children: j.gebruikte_layout_id
157
+ return (_jsxs("main", { className: "space-y-6 p-6", children: [_jsx(PdfMapAutoSaver, {}), _jsx(PdfMapToestemmingBanner, {}), _jsxs("div", { className: "flex flex-wrap items-end justify-between gap-4", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-xl font-semibold", children: "Printwachtrij" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Volg printopdrachten, herstart mislukte prints en print documenten opnieuw." })] }), _jsx("span", { className: "text-muted-foreground text-xs", children: bijgewerktTekst(bijgewerkt) })] }), _jsx(PrintStatusBanner, { fout: tickFout }), _jsx("div", { className: "grid gap-4 md:grid-cols-4", children: ["wachtend", "bezig", "voltooid", "mislukt"].map((s) => (_jsx(Card, { children: _jsxs(CardHeader, { className: "pb-2", children: [_jsx(CardDescription, { className: "capitalize", children: s }), _jsx(CardTitle, { className: "text-2xl", children: tellingen[s] ?? 0 })] }) }, s))) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Opdrachten" }), _jsx(CardDescription, { children: loading ? "Laden…" : `${gefilterd.length} opdrachten` })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-3 md:grid-cols-5", children: [_jsxs("div", { className: "relative md:col-span-2", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek op document of gebruiker", value: zoek, onChange: (e) => setZoek(e.target.value) })] }), _jsxs(Select, { value: status, onValueChange: setStatus, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle statussen" }), ["wachtend", "bezig", "voltooid", "mislukt", "geannuleerd"].map((s) => (_jsx(SelectItem, { value: s, children: s }, s)))] })] }), _jsxs(Select, { value: plekFilter, onValueChange: setPlekFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle printplekken" }), plekOpties.map((p) => (_jsx(SelectItem, { value: p, children: p }, p))), _jsx(SelectItem, { value: "\u2014", children: "Zonder printplek" })] })] }), _jsxs(Select, { value: opslagFilter, onValueChange: setOpslagFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle PDF-opslag" }), _jsx(SelectItem, { value: "fout", children: "Opslag mislukt" }), _jsx(SelectItem, { value: "wacht", children: "Wacht op werkplek" }), _jsx(SelectItem, { value: "opgeslagen", children: "Opgeslagen in map" })] })] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Document" }), _jsx(TableHead, { children: "Printplek" }), _jsx(TableHead, { children: "Layout (aangeleverd \u2192 gebruikt)" }), _jsx(TableHead, { children: "Printer" }), _jsx(TableHead, { children: "Status" }), _jsx(TableHead, { children: "Tijdstip" }), _jsx(TableHead, { className: "text-right", children: "Acties" })] }) }), _jsxs(TableBody, { children: [gefilterd.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 7, className: "py-10 text-center text-sm text-muted-foreground", children: "Geen printopdrachten." }) })), gefilterd.map((j) => (_jsxs(TableRow, { children: [_jsxs(TableCell, { children: [_jsx("span", { className: "font-medium", children: j.documentnaam ?? documentTypeLabel(j.documenttype) }), j.is_herprint && (_jsx(Badge, { variant: "outline", className: "ml-2", children: "herprint" })), !heeftOrderKenmerk(j) && (_jsx(Badge, { variant: "outline", className: "ml-2 text-amber-600", children: "geen orderkenmerk" })), j.foutmelding && (_jsx("span", { className: "block text-xs text-destructive", children: j.foutmelding })), j.lokale_pdf_fout && (_jsx("span", { className: "block text-xs text-destructive", children: j.lokale_pdf_fout })), (["map_ontbreekt", "geen_rechten", "toestemming_nodig"].includes(j.lokale_pdf_status ?? "") ||
158
+ (j.lokale_pdf_status === "gereed" && !j.lokale_pdf_print_plek_id)) && (_jsxs(Button, { variant: "outline", size: "sm", className: "mt-1", onClick: () => void stelMapIn(jobPrintPlekId(j) || undefined), children: [_jsx(FolderOpen, { className: "mr-2 h-4 w-4" }), " Map instellen"] }))] }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: plekPerJob.get(j.id) || "—" }), _jsxs(TableCell, { className: "text-sm text-muted-foreground", children: [_jsx("span", { title: "Aangeleverd door de module", children: j.layout_id ? layoutNaam.get(j.layout_id) ?? "Onbekende layout" : "geen" }), _jsxs("span", { className: "block text-xs", children: ["\u2192", " ", _jsx("span", { title: "Layout die de wachtrij gebruikte", children: j.gebruikte_layout_id
119
159
  ? layoutNaam.get(j.gebruikte_layout_id) ?? "Onbekende layout"
120
160
  : j.gebruikte_bron
121
161
  ? "geen layout"
122
- : "nog niet verwerkt" }), j.gebruikte_bron && (_jsx(Badge, { variant: "outline", className: "ml-2", children: BRON_LABEL[j.gebruikte_bron] ?? j.gebruikte_bron }))] })] }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: j.printer_id ? printerNaam.get(j.printer_id) ?? "—" : "—" }), _jsx(TableCell, { children: _jsx(Badge, { variant: STATUS_VARIANT[j.status] ?? "outline", children: (j.lokale_pdf_status && LOKALE_PDF_LABEL[j.lokale_pdf_status]) ?? j.status }) }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: new Date(j.created_at).toLocaleString("nl-NL") }), _jsx(TableCell, { className: "text-right", children: _jsxs("div", { className: "flex justify-end gap-1", children: [j.resultaat_pdf_base64 && (_jsxs(Button, { variant: "ghost", size: "sm", title: "Bewaar de opgemaakte PDF", onClick: async () => {
123
- const bytes = Uint8Array.from(atob(j.resultaat_pdf_base64), (c) => c.charCodeAt(0));
124
- const blob = new Blob([bytes], { type: "application/pdf" });
125
- const bestandsnaam = `${j.documentnaam ?? "document"}.pdf`;
126
- const inMap = j.printer_id
127
- ? await bewaarInPdfMap(j.printer_id, bestandsnaam, blob)
128
- : false;
129
- if (inMap) {
130
- await supabase
131
- .from("print_jobs")
132
- .update({
133
- status: "voltooid",
134
- lokale_pdf_status: "opgeslagen",
135
- lokaal_opgeslagen_op: new Date().toISOString(),
136
- lokale_pdf_fout: null,
137
- })
138
- .eq("id", j.id);
139
- toast.success("PDF opgeslagen in de ingestelde map");
162
+ : "nog niet verwerkt" }), j.gebruikte_bron && (_jsx(Badge, { variant: "outline", className: "ml-2", children: BRON_LABEL[j.gebruikte_bron] ?? j.gebruikte_bron }))] })] }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: j.printer_id ? printerNaam.get(j.printer_id) ?? "—" : "—" }), _jsx(TableCell, { children: _jsx(Badge, { variant: STATUS_VARIANT[j.status] ?? "outline", children: pdfOpslagLabel(j.lokale_pdf_status, Boolean(j.lokale_pdf_print_plek_id)) ?? j.status }) }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: new Date(j.created_at).toLocaleString("nl-NL") }), _jsx(TableCell, { className: "text-right", children: _jsxs("div", { className: "flex justify-end gap-1", children: [(j.artefact_pad || j.resultaat_pdf_base64) && (_jsxs(Button, { variant: "ghost", size: "sm", title: "Bewaar de opgemaakte PDF", onClick: async () => {
163
+ try {
164
+ await downloadPdfJob(j.id, j.documentnaam ?? "document");
165
+ }
166
+ catch (fout) {
167
+ toast.error(fout instanceof Error ? fout.message : "PDF downloaden mislukt");
168
+ }
169
+ }, children: [_jsx(FileDown, { className: "mr-2 h-4 w-4" }), " PDF"] })), j.lokale_pdf_status !== "opgeslagen" &&
170
+ (j.artefact_pad || j.resultaat_pdf_base64) && (_jsxs(Button, { variant: "ghost", size: "sm", title: "Bewaar de bestaande PDF opnieuw in de ingestelde map", onClick: async () => {
171
+ try {
172
+ await bewaarPdfJobOpnieuw(j.id);
173
+ toast.success("De bestaande PDF wordt opnieuw in de ingestelde map opgeslagen");
174
+ }
175
+ catch (fout) {
176
+ toast.error(fout instanceof Error ? fout.message : "Opnieuw opslaan mislukt");
177
+ }
178
+ finally {
140
179
  void reload(true);
141
- return;
142
180
  }
143
- const url = URL.createObjectURL(blob);
144
- const a = document.createElement("a");
145
- a.href = url;
146
- a.download = bestandsnaam;
147
- a.click();
148
- URL.revokeObjectURL(url);
149
- }, children: [_jsx(FileDown, { className: "mr-2 h-4 w-4" }), " PDF"] })), _jsxs(Button, { variant: "ghost", size: "sm", onClick: async () => {
181
+ }, children: [_jsx(Save, { className: "mr-2 h-4 w-4" }), " Opslag opnieuw"] })), _jsxs(Button, { variant: "ghost", size: "sm", onClick: async () => {
150
182
  if (!j.layout_id)
151
183
  return;
152
184
  try {
@@ -157,6 +189,12 @@ export function PrintQueuePage() {
157
189
  documentnaam: j.documentnaam ?? "Herprint",
158
190
  kopieen: j.kopieen ?? 1,
159
191
  is_herprint: true,
192
+ bron_job_id: j.id,
193
+ payload: {
194
+ ...(j.payload && typeof j.payload === "object" ? j.payload : {}),
195
+ is_herprint: true,
196
+ bron_job_id: j.id,
197
+ },
160
198
  });
161
199
  toast.success("Opnieuw in de wachtrij gezet");
162
200
  void reload();
@@ -1 +1 @@
1
- {"version":3,"file":"PrintplekDetailPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekDetailPage.tsx"],"names":[],"mappings":"AAiDA,wBAAgB,mBAAmB,gCAsYlC"}
1
+ {"version":3,"file":"PrintplekDetailPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekDetailPage.tsx"],"names":[],"mappings":"AAiDA,wBAAgB,mBAAmB,gCA0YlC"}
@@ -86,7 +86,7 @@ export function PrintplekDetailPage() {
86
86
  if (!plek) {
87
87
  return (_jsxs("main", { className: "space-y-4 p-6", children: [_jsx(Button, { variant: "ghost", asChild: true, children: _jsxs(Link, { to: "/layouts-printers/printplekken", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), " Terug"] }) }), _jsx("p", { className: "text-muted-foreground text-sm", children: "Deze printplek bestaat niet (meer)." })] }));
88
88
  }
89
- return (_jsxs("main", { className: "space-y-6 p-6", children: [_jsx(PdfMapAutoSaver, {}), _jsx(PdfMapToestemmingBanner, {}), _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsx(Button, { variant: "ghost", size: "sm", asChild: true, className: "-ml-2", children: _jsxs(Link, { to: "/layouts-printers/printplekken", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), " Alle printplekken"] }) }), naamBewerken ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Input, { value: naam, onChange: (e) => setNaam(e.target.value), className: "w-64" }), _jsx(Button, { size: "icon", onClick: async () => {
89
+ return (_jsxs("main", { className: "space-y-6 p-6", children: [_jsx(PdfMapAutoSaver, {}), _jsx(PdfMapToestemmingBanner, { printplekId: plekId }), _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsx(Button, { variant: "ghost", size: "sm", asChild: true, className: "-ml-2", children: _jsxs(Link, { to: "/layouts-printers/printplekken", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), " Alle printplekken"] }) }), naamBewerken ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Input, { value: naam, onChange: (e) => setNaam(e.target.value), className: "w-64" }), _jsx(Button, { size: "icon", onClick: async () => {
90
90
  await bewerkPrintplek(plek.id, { naam: naam.trim() });
91
91
  setNaamBewerken(false);
92
92
  await reload(true);
@@ -116,6 +116,6 @@ export function PrintplekDetailPage() {
116
116
  printers.find((p) => p.id === regel?.printer_id) ??
117
117
  null;
118
118
  const isPdf = printer?.afdrukmethode === "pdf";
119
- return (_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 rounded-lg border p-2", children: [_jsx("div", { className: "text-sm font-medium", children: documentTypeLabel(d.value) }), printer ? (_jsxs("span", { className: "text-muted-foreground text-sm", children: [printer.naam, isPdf && pdfMap ? (_jsxs("span", { className: "ml-2 text-xs", children: ["\u2192 map \u201C", pdfMap, "\u201D"] })) : null] })) : (_jsxs("span", { className: "text-destructive flex items-center gap-1 text-xs", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), " Geen printer"] }))] }, d.value));
119
+ return (_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 rounded-lg border p-2", children: [_jsx("div", { className: "text-sm font-medium", children: documentTypeLabel(d.value) }), printer ? (_jsxs("span", { className: "text-muted-foreground text-sm", children: [printer.naam, isPdf ? (_jsxs("span", { className: "ml-2 inline-flex items-center gap-1 rounded-full bg-amber-100 px-2 py-0.5 text-xs font-medium text-amber-900", children: [_jsx(AlertTriangle, { className: "h-3 w-3" }), "Wordt niet geprint, maar opgeslagen als PDF", pdfMap ? ` in “${pdfMap}”` : ""] })) : null] })) : (_jsxs("span", { className: "text-destructive flex items-center gap-1 text-xs", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), " Geen printer"] }))] }, d.value));
120
120
  }), !alleDocumenten && overige.length > 0 ? (_jsxs("p", { className: "text-muted-foreground text-xs", children: [overige.length, " documentsoort", overige.length === 1 ? "" : "en", " nog niet ingesteld."] })) : null] })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2 text-base", children: [_jsx(Link2, { className: "h-4 w-4" }), " Gekoppeld aan"] }), _jsx(CardDescription, { children: "Andere modules (bijvoorbeeld pickstations) kunnen zich aan deze printplek koppelen." })] }), _jsxs(CardContent, { className: "space-y-4", children: [bronnen.length === 0 ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "Nog niets gekoppeld. Kies deze printplek in de andere module (bijvoorbeeld bij een pickstation); de koppeling verschijnt hier vanzelf." })) : (_jsx("div", { className: "space-y-2", children: bronnen.map((b) => (_jsxs("div", { className: "flex flex-wrap items-center gap-3 rounded-lg border px-3 py-2 text-sm", children: [_jsx(Badge, { variant: "secondary", children: b.bron }), _jsxs("span", { className: "min-w-0 flex-1 truncate", children: [b.label ?? b.bron_id, _jsx("span", { className: "text-muted-foreground ml-2 text-xs", children: b.bron_id })] }), _jsxs(Button, { variant: "ghost", size: "sm", onClick: () => void ontkoppel(b.bron, b.bron_id), children: [_jsx(X, { className: "mr-1 h-3.5 w-3.5" }), " Ontkoppelen"] })] }, b.id))) })), weeskoppelingen.length > 0 ? (_jsxs("div", { className: "space-y-2 rounded-lg border border-dashed p-3", children: [_jsxs("p", { className: "text-muted-foreground flex items-center gap-2 text-xs", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), " Koppelingen zonder bestaande printplek:"] }), weeskoppelingen.map((b) => (_jsxs("div", { className: "flex flex-wrap items-center gap-3 text-sm", children: [_jsx("span", { className: "min-w-0 flex-1 truncate", children: b.label ?? `${b.bron} ${b.bron_id}` }), _jsxs(Button, { variant: "ghost", size: "sm", onClick: () => void ontkoppel(b.bron, b.bron_id), children: [_jsx(Trash2, { className: "mr-1 h-3.5 w-3.5" }), " Opruimen"] })] }, b.id)))] })) : null] })] })] }));
121
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PrintplekWizard.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekWizard.tsx"],"names":[],"mappings":"AAiEA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,+BAsjBA"}
1
+ {"version":3,"file":"PrintplekWizard.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekWizard.tsx"],"names":[],"mappings":"AAiEA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,+BA0jBA"}
@@ -37,7 +37,11 @@ export function PrintplekWizard({ open, onOpenChange, printplekId, onKlaar, }) {
37
37
  const [pdfMap, setPdfMap] = useState({});
38
38
  /** Opent de mappenverkenner en bewaart de keuze direct. */
39
39
  async function mapKiezen(printerId) {
40
- const uitkomst = await kiesPdfMap(printerId);
40
+ if (!plekId) {
41
+ toast.error("Sla eerst de naam van deze printplek op voordat u een PDF-map kiest.");
42
+ return;
43
+ }
44
+ const uitkomst = await kiesPdfMap(printerId, plekId);
41
45
  if (uitkomst.status === "gekozen") {
42
46
  setPdfMap((m) => ({ ...m, [printerId]: uitkomst.naam }));
43
47
  await bewaarPdfMap(printerId, uitkomst.naam);
@@ -52,7 +56,7 @@ export function PrintplekWizard({ open, onOpenChange, printplekId, onKlaar, }) {
52
56
  description: "Open de app in een eigen tabblad — daar werkt Map kiezen wel. U kunt het pad ook handmatig intypen.",
53
57
  action: {
54
58
  label: "Open in eigen tabblad",
55
- onClick: () => openInEigenTabblad(),
59
+ onClick: () => openInEigenTabblad(plekId),
56
60
  },
57
61
  duration: 10000,
58
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ProductiebonBuilderPage.d.ts","sourceRoot":"","sources":["../../src/components/ProductiebonBuilderPage.tsx"],"names":[],"mappings":"AAuBA,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,+BA6I7F"}
1
+ {"version":3,"file":"ProductiebonBuilderPage.d.ts","sourceRoot":"","sources":["../../src/components/ProductiebonBuilderPage.tsx"],"names":[],"mappings":"AAuBA,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,+BAsJ7F"}
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useMemo, useState } from "react";
3
3
  import { Link } from "@tanstack/react-router";
4
4
  import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, toast, } from "@flowselections/core";
5
- import { ArrowLeft, Loader2, Printer, Save } from "lucide-react";
5
+ import { AlertTriangle, ArrowLeft, CheckCircle2, Loader2, Printer, Save } from "lucide-react";
6
6
  import { ProductiebonBlokkenPanel } from "./ProductiebonBlokkenPanel.js";
7
- import { ProductiebonPreview } from "./ProductiebonPreview.js";
7
+ import { PdfVoorbeeld } from "./PdfVoorbeeld.js";
8
8
  import { FormaatOrientatieBar } from "./FormaatOrientatieBar.js";
9
9
  import { leesProductiebonConfig } from "../lib/productiebonBuilder.js";
10
10
  import { updateLayout, useLayoutDetail } from "../lib/useDocumentData.js";
@@ -19,14 +19,21 @@ export function ProductiebonBuilderPage({ layoutId: layoutIdProp } = {}) {
19
19
  const [config, setConfig] = useState(null);
20
20
  const [bezig, setBezig] = useState(false);
21
21
  const [printen, setPrinten] = useState(false);
22
+ const [controle, setControle] = useState("controleren");
22
23
  useEffect(() => {
23
24
  if (layout)
24
25
  setConfig(leesProductiebonConfig(layout.config));
25
26
  }, [layout?.id]);
26
27
  const breedte = useMemo(() => (layout?.orientatie === "landscape" ? layout?.hoogte_mm : layout?.breedte_mm) ?? 210, [layout]);
27
28
  const hoogte = useMemo(() => (layout?.orientatie === "landscape" ? layout?.breedte_mm : layout?.hoogte_mm) ?? 297, [layout]);
29
+ const marge = Number(layout?.marge_boven ?? 10);
30
+ const voorbeeldHtml = useMemo(() => {
31
+ if (!config)
32
+ return "";
33
+ return renderProductiebonDocument({ productiebon: config }, {}, { breedteMm: breedte, hoogteMm: hoogte, margeMm: marge, titel: layout?.naam ?? "Productiebon" });
34
+ }, [config, breedte, hoogte, marge, layout?.naam]);
28
35
  const opslaan = async () => {
29
- if (!layout || !config)
36
+ if (!layout || !config || controle !== "gereed")
30
37
  return;
31
38
  setBezig(true);
32
39
  try {
@@ -43,18 +50,17 @@ export function ProductiebonBuilderPage({ layoutId: layoutIdProp } = {}) {
43
50
  }
44
51
  };
45
52
  const voorbeeldPrinten = async () => {
46
- if (!config)
53
+ if (!config || controle !== "gereed")
47
54
  return;
48
55
  setPrinten(true);
49
56
  try {
50
- const html = renderProductiebonDocument({ productiebon: config }, {}, { breedteMm: breedte, hoogteMm: hoogte, titel: layout?.naam ?? "Productiebon" });
51
57
  await voorbeeldPrint({
52
58
  ...(layout ?? {}),
53
59
  id: layout?.id ?? layoutId,
54
60
  naam: layout?.naam,
55
61
  documenttype: layout?.documenttype ?? "productiebon",
56
62
  papierformaat: layout?.papierformaat,
57
- }, html);
63
+ }, voorbeeldHtml);
58
64
  }
59
65
  catch (e) {
60
66
  toast.error(e instanceof Error ? e.message : "Voorbeeld printen mislukt");
@@ -69,5 +75,5 @@ export function ProductiebonBuilderPage({ layoutId: layoutIdProp } = {}) {
69
75
  return _jsx("main", { className: "p-6 text-sm text-muted-foreground", children: "Layout laden\u2026" });
70
76
  if (!layout || !config)
71
77
  return _jsx("main", { className: "p-6 text-sm text-muted-foreground", children: "Layout niet gevonden." });
72
- return (_jsxs("main", { className: "space-y-4 p-6", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Button, { variant: "ghost", size: "sm", asChild: true, children: _jsxs(Link, { to: "/layouts-printers", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), " Layouts"] }) }), _jsxs("div", { children: [_jsx("h1", { className: "text-lg font-semibold", children: layout.naam }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Productiebon opbouwen uit blokken \u00B7 ", config.blokken.length, " blokken"] })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [layoutId ? _jsx(LayoutPrinterSelect, { layoutId: layoutId }) : null, _jsxs(Button, { size: "sm", variant: "outline", onClick: voorbeeldPrinten, disabled: printen, children: [printen ? (_jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" })) : (_jsx(Printer, { className: "mr-2 h-4 w-4" })), "Voorbeeld printen"] }), _jsxs(Button, { size: "sm", onClick: opslaan, disabled: bezig, children: [_jsx(Save, { className: "mr-2 h-4 w-4" }), " Opslaan"] })] })] }), _jsx(FormaatOrientatieBar, { layout: layout, onChange: (patch) => setLayout((l) => (l ? { ...l, ...patch } : l)) }), _jsxs("div", { className: "grid items-start gap-4 lg:grid-cols-[400px_1fr]", children: [_jsxs(Card, { className: "flex h-[calc(100vh-14rem)] min-h-[420px] flex-col overflow-hidden lg:sticky lg:top-4", children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Blokken" }), _jsx(CardDescription, { children: "Voeg blokken toe, wijzig de volgorde en stel elk blok afzonderlijk in." })] }), _jsx(CardContent, { className: "min-h-0 flex-1 overflow-y-auto", children: _jsx(ProductiebonBlokkenPanel, { config: config, onChange: setConfig }) })] }), _jsxs(Card, { className: "flex h-[calc(100vh-14rem)] min-h-[420px] flex-col overflow-hidden", children: [_jsxs(CardHeader, { className: "flex-row items-center justify-between space-y-0 pb-3", children: [_jsxs("div", { children: [_jsx(CardTitle, { className: "text-base", children: "Live voorbeeld" }), _jsx(CardDescription, { children: "Voorbeeldproductieorder met samenstelling en belading." })] }), _jsx(Badge, { variant: "secondary", children: "Direct bijgewerkt" })] }), _jsx(CardContent, { className: "min-h-0 flex-1 overflow-hidden", children: _jsx("div", { className: "h-full overflow-auto rounded-md border bg-muted/30 p-2", children: _jsx(ProductiebonPreview, { config: config, breedteMm: breedte, hoogteMm: hoogte }) }) })] })] })] }));
78
+ return (_jsxs("main", { className: "space-y-4 p-6", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Button, { variant: "ghost", size: "sm", asChild: true, children: _jsxs(Link, { to: "/layouts-printers", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), " Layouts"] }) }), _jsxs("div", { children: [_jsx("h1", { className: "text-lg font-semibold", children: layout.naam }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Productiebon opbouwen uit blokken \u00B7 ", config.blokken.length, " blokken"] })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [layoutId ? _jsx(LayoutPrinterSelect, { layoutId: layoutId }) : null, _jsxs(Button, { size: "sm", variant: "outline", onClick: voorbeeldPrinten, disabled: printen || controle !== "gereed", children: [printen ? (_jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" })) : (_jsx(Printer, { className: "mr-2 h-4 w-4" })), "Voorbeeld printen"] }), _jsxs(Button, { size: "sm", onClick: opslaan, disabled: bezig || controle !== "gereed", children: [_jsx(Save, { className: "mr-2 h-4 w-4" }), " Opslaan"] })] })] }), _jsx(FormaatOrientatieBar, { layout: layout, onChange: (patch) => setLayout((l) => (l ? { ...l, ...patch } : l)) }), _jsxs("div", { className: "grid items-start gap-4 lg:grid-cols-[400px_1fr]", children: [_jsxs(Card, { className: "flex h-[calc(100vh-14rem)] min-h-[420px] flex-col overflow-hidden lg:sticky lg:top-4", children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Blokken" }), _jsx(CardDescription, { children: "Voeg blokken toe, wijzig de volgorde en stel elk blok afzonderlijk in." })] }), _jsx(CardContent, { className: "min-h-0 flex-1 overflow-y-auto", children: _jsx(ProductiebonBlokkenPanel, { config: config, onChange: setConfig }) })] }), _jsxs(Card, { className: "flex h-[calc(100vh-14rem)] min-h-[420px] flex-col overflow-hidden", children: [_jsxs(CardHeader, { className: "flex-row items-center justify-between space-y-0 pb-3", children: [_jsxs("div", { children: [_jsx(CardTitle, { className: "text-base", children: "Live voorbeeld" }), _jsx(CardDescription, { children: "Voorbeeldproductieorder met samenstelling en belading." })] }), _jsxs(Badge, { variant: controle === "afwijking" ? "destructive" : "secondary", children: [controle === "controleren" ? _jsx(Loader2, { className: "mr-1 h-3 w-3 animate-spin" }) : controle === "gereed" ? _jsx(CheckCircle2, { className: "mr-1 h-3 w-3" }) : _jsx(AlertTriangle, { className: "mr-1 h-3 w-3" }), controle === "controleren" ? "Controleren" : controle === "gereed" ? "Afdruk gereed" : "Afwijking gevonden"] })] }), _jsx(CardContent, { className: "min-h-0 flex-1 overflow-hidden", children: _jsx("div", { className: "h-full overflow-hidden rounded-md border bg-muted/30 p-2", children: voorbeeldHtml ? _jsx(PdfVoorbeeld, { html: voorbeeldHtml, breedteMm: breedte, hoogteMm: hoogte, margeMm: marge, onControle: (status) => setControle(status) }) : null }) })] })] })] }));
73
79
  }
@@ -20,18 +20,28 @@ export { PrintQueuePage } from './components/PrintQueuePage.js';
20
20
  export { PdfMapAutoSaver } from './components/PdfMapAutoSaver.js';
21
21
  export { PdfMapToestemmingBanner } from './components/PdfMapToestemmingBanner.js';
22
22
  export { startPdfMapGlobaleBanner } from './components/PdfMapGlobaleBanner.js';
23
- export { bewaarPdfJobZodraKlaar, startPdfMapService } from './lib/pdfJobSaver.js';
24
- export { bewaarInPdfMap, draaitInIframe, herstelPdfMapToestemming, heeftPdfMap, kiesPdfMap, luisterNaarPdfMapWijziging, mapKiezenMogelijk, openInEigenTabblad, pdfMapNaam, pdfMapToestemming } from './lib/pdfMap.js';
23
+ export { bewaarPdfJobZodraKlaar, bewaarPdfJobOpnieuw, controleerPdfMap, startPdfMapService } from './lib/pdfJobSaver.js';
24
+ export { PDF_OPSLAG_STATUSSEN, PDF_OPSLAG_FOUTSTATUSSEN, PDF_OPSLAG_LABEL, PDF_OPSLAG_MELDING, isOpslagFout, } from './lib/pdfOpslagStatus.js';
25
+ export type { PdfOpslagStatus } from './lib/pdfOpslagStatus.js';
26
+ export { bewaarInPdfMap, draaitInIframe, herstelPdfMapToestemming, heeftPdfMap, kiesPdfMap, koppelPdfMapAanPrintplek, luisterNaarPdfMapWijziging, lokalePdfPrintplek, mapKiezenMogelijk, openInEigenTabblad, pdfMapKoppeling, pdfMapNaam, pdfMapToestemming } from './lib/pdfMap.js';
27
+ export type { PdfMapKoppeling } from './lib/pdfMap.js';
25
28
  export { AiLayoutImportDialog } from './components/AiLayoutImportDialog.js';
26
29
  export { LogosPage, LogoThumbnail } from './components/LogosPage.js';
27
30
  export { PakbonBuilderPage } from './components/PakbonBuilderPage.js';
31
+ export { AfleverbriefBuilderPage } from './components/AfleverbriefBuilderPage.js';
32
+ export { FustKolomVolgorde } from './components/FustKolomVolgorde.js';
28
33
  export { BlokOntwerperPage } from './components/BlokOntwerperPage.js';
29
34
  export { PakbonBlokKaderEditor, PakbonSectieEditor, PakbonSectiesPanel } from './components/PakbonSectiesPanel.js';
30
35
  export { PakbonPreview, PakbonSectiePreview } from './components/PakbonPreview.js';
31
- export { BESCHIKBARE_KOLOMMEN, CONDITIE_VELDEN, DEMO_ORDER, FUST_VELD_OPTIES, SECTIE_REGISTER, alleProducten, conditieContext, fustVerzamellijst, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, kolomLabel, laagBundelTekst, leesPakbonConfig, nieuweKolom, nieuweSectie, pickMethode, productVeldBreedtes, sectieDef, sectieOnderdrukt, sectieZichtbaar, sorteerProducten, standaardPakbonConfig, totalen, vulVeldcodes } from './lib/pakbonBuilder.js';
32
- export type { DemoKar, DemoLaag, DemoOrder, DemoProduct, FustVerzamelGroep, FustVerzamelProduct, KarGroep, LaagGroep, PakbonConditie, PakbonConfig, PakbonDocumentLogo, PakbonKolom, PakbonSectie, PakbonSectieType, SectieDef } from './lib/pakbonBuilder.js';
36
+ export { BESCHIKBARE_KOLOMMEN, CONDITIE_VELDEN, DEMO_ORDER, deelkarVoorbeeldOrder, FUST_VELD_OPTIES, SECTIE_REGISTER, alleProducten, conditieContext, fustVerzamellijst, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, kolomLabel, laagBundelTekst, leesAfleverbriefConfig, leesPakbonConfig, nieuweKolom, nieuweSectie, pakbonLayoutVariant, pickMethode, productVeldBreedtes, sectieDef, sectieOnderdrukt, sectieOnderdruktVoorVariant, sectieZichtbaar, sorteerProducten, standaardAfleverbriefConfig, standaardPakbonConfig, totalen, vulVeldcodes } from './lib/pakbonBuilder.js';
37
+ export type { DemoKar, DemoLaag, DemoOrder, DemoProduct, FustVerzamelGroep, FustVerzamelProduct, KarGroep, LaagGroep, PakbonConditie, PakbonConfig, PakbonDocumentLogo, PakbonKolom, PakbonLayoutVariant, PakbonSectie, PakbonSectieType, PickMethode, SectieDef } from './lib/pakbonBuilder.js';
33
38
  export { esc, maakPakbonOrder, printPakbon, printPakbonMetLogos, renderPakbonBody, renderPakbonDocument, voorbeeldPakbonOrder } from './lib/pakbonHtml.js';
34
39
  export type { PakbonLogo, PakbonOrder, PakbonRenderOpties } from './lib/pakbonHtml.js';
40
+ export { karMetadata } from './lib/pakbonPresentation.js';
41
+ export { bouwPakbonScanInhoud, bewaarPakbonScanInhoud } from './lib/pakbonScan.js';
42
+ export type { PakbonScanInhoud, PakbonScanRegel } from './lib/pakbonScan.js';
43
+ export { bouwPakbonBarcodeVerzoek, geleverdeBarcodeVoorJob, vraagPakbonBarcodeAan, } from './lib/pakbonBarcodeVerzoek.js';
44
+ export type { PakbonBarcodeVerzoek } from './lib/pakbonBarcodeVerzoek.js';
35
45
  export { ProductiebonBuilderPage } from './components/ProductiebonBuilderPage.js';
36
46
  export { ProductiebonBlokkenPanel } from './components/ProductiebonBlokkenPanel.js';
37
47
  export { ProductiebonBlokPreview, ProductiebonPreview } from './components/ProductiebonPreview.js';
@@ -63,8 +73,8 @@ export { bewaarElementen, bewaarPrinter, bewaarVersie, dupliceerLayout, maakLayo
63
73
  export { jobPickstation, jobPlekLabel, jobPrintPlekId, jobWerkplek } from './lib/printQueue.js';
64
74
  export type { PlekNamen } from './lib/printQueue.js';
65
75
  export type { PrintJobModel, PrinterModel } from './lib/useDocumentData.js';
66
- export { beschikbareLayouts, beschikbarePrinters, printDocument, printPdf, printHtml, printerVoorWerkplek, printerVoorDocumenttype, printerVoorLayout, volgJobStatus, DubbeleAanvraagFout, } from './lib/printApi.js';
67
- export type { PrintDocumentInput, PrintDocumentResult, PrintPdfInput, PrintHtmlInput, JobStatus, } from './lib/printApi.js';
76
+ export { beschikbareLayouts, beschikbarePrinters, printDocument, printPdf, printHtml, printVerzendbriefVoorKar, printerVoorWerkplek, printerVoorDocumenttype, printerVoorLayout, volgJobStatus, DubbeleAanvraagFout, } from './lib/printApi.js';
77
+ export type { PrintDocumentInput, PrintDocumentResult, PrintPdfInput, PrintHtmlInput, VerzendbriefVoorKarInput, JobStatus, } from './lib/printApi.js';
68
78
  export { printDirect } from './lib/directPrint.js';
69
79
  export type { DirectPrintOpdracht, DirectPrintResultaat } from './lib/directPrint.js';
70
80
  export { htmlNaarPdfBase64 } from './lib/documentPdf.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtH,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClR,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,eAAe,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvkB,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9R,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxJ,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACha,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7N,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChX,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxK,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9H,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1H,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5H,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACzI,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1Q,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjN,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACtH,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACnU,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7F,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,QAAQ,EACR,SAAS,EACT,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EAAE,iBAAiB,EAE1C,aAAa,EACb,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,0BAA0B,EAC1B,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,YAAY,EAAE,UAkB1B,CAAC;AAMF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC"}
package/dist-lib/index.js CHANGED
@@ -21,16 +21,22 @@ export { PrintQueuePage } from './components/PrintQueuePage.js';
21
21
  export { PdfMapAutoSaver } from './components/PdfMapAutoSaver.js';
22
22
  export { PdfMapToestemmingBanner } from './components/PdfMapToestemmingBanner.js';
23
23
  export { startPdfMapGlobaleBanner } from './components/PdfMapGlobaleBanner.js';
24
- export { bewaarPdfJobZodraKlaar, startPdfMapService } from './lib/pdfJobSaver.js';
25
- export { bewaarInPdfMap, draaitInIframe, herstelPdfMapToestemming, heeftPdfMap, kiesPdfMap, luisterNaarPdfMapWijziging, mapKiezenMogelijk, openInEigenTabblad, pdfMapNaam, pdfMapToestemming } from './lib/pdfMap.js';
24
+ export { bewaarPdfJobZodraKlaar, bewaarPdfJobOpnieuw, controleerPdfMap, startPdfMapService } from './lib/pdfJobSaver.js';
25
+ export { PDF_OPSLAG_STATUSSEN, PDF_OPSLAG_FOUTSTATUSSEN, PDF_OPSLAG_LABEL, PDF_OPSLAG_MELDING, isOpslagFout, } from './lib/pdfOpslagStatus.js';
26
+ export { bewaarInPdfMap, draaitInIframe, herstelPdfMapToestemming, heeftPdfMap, kiesPdfMap, koppelPdfMapAanPrintplek, luisterNaarPdfMapWijziging, lokalePdfPrintplek, mapKiezenMogelijk, openInEigenTabblad, pdfMapKoppeling, pdfMapNaam, pdfMapToestemming } from './lib/pdfMap.js';
26
27
  export { AiLayoutImportDialog } from './components/AiLayoutImportDialog.js';
27
28
  export { LogosPage, LogoThumbnail } from './components/LogosPage.js';
28
29
  export { PakbonBuilderPage } from './components/PakbonBuilderPage.js';
30
+ export { AfleverbriefBuilderPage } from './components/AfleverbriefBuilderPage.js';
31
+ export { FustKolomVolgorde } from './components/FustKolomVolgorde.js';
29
32
  export { BlokOntwerperPage } from './components/BlokOntwerperPage.js';
30
33
  export { PakbonBlokKaderEditor, PakbonSectieEditor, PakbonSectiesPanel } from './components/PakbonSectiesPanel.js';
31
34
  export { PakbonPreview, PakbonSectiePreview } from './components/PakbonPreview.js';
32
- export { BESCHIKBARE_KOLOMMEN, CONDITIE_VELDEN, DEMO_ORDER, FUST_VELD_OPTIES, SECTIE_REGISTER, alleProducten, conditieContext, fustVerzamellijst, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, kolomLabel, laagBundelTekst, leesPakbonConfig, nieuweKolom, nieuweSectie, pickMethode, productVeldBreedtes, sectieDef, sectieOnderdrukt, sectieZichtbaar, sorteerProducten, standaardPakbonConfig, totalen, vulVeldcodes } from './lib/pakbonBuilder.js';
35
+ export { BESCHIKBARE_KOLOMMEN, CONDITIE_VELDEN, DEMO_ORDER, deelkarVoorbeeldOrder, FUST_VELD_OPTIES, SECTIE_REGISTER, alleProducten, conditieContext, fustVerzamellijst, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, kolomLabel, laagBundelTekst, leesAfleverbriefConfig, leesPakbonConfig, nieuweKolom, nieuweSectie, pakbonLayoutVariant, pickMethode, productVeldBreedtes, sectieDef, sectieOnderdrukt, sectieOnderdruktVoorVariant, sectieZichtbaar, sorteerProducten, standaardAfleverbriefConfig, standaardPakbonConfig, totalen, vulVeldcodes } from './lib/pakbonBuilder.js';
33
36
  export { esc, maakPakbonOrder, printPakbon, printPakbonMetLogos, renderPakbonBody, renderPakbonDocument, voorbeeldPakbonOrder } from './lib/pakbonHtml.js';
37
+ export { karMetadata } from './lib/pakbonPresentation.js';
38
+ export { bouwPakbonScanInhoud, bewaarPakbonScanInhoud } from './lib/pakbonScan.js';
39
+ export { bouwPakbonBarcodeVerzoek, geleverdeBarcodeVoorJob, vraagPakbonBarcodeAan, } from './lib/pakbonBarcodeVerzoek.js';
34
40
  export { ProductiebonBuilderPage } from './components/ProductiebonBuilderPage.js';
35
41
  export { ProductiebonBlokkenPanel } from './components/ProductiebonBlokkenPanel.js';
36
42
  export { ProductiebonBlokPreview, ProductiebonPreview } from './components/ProductiebonPreview.js';
@@ -51,7 +57,7 @@ export { alleEntiteiten, alleVelden, registreerEntiteit, veldRegisterSubscribe,
51
57
  export { VOORBEELD_REGELS, bouwDocumentHtml, conditieVoldoet, voorbeeldContext, vulVelden } from './lib/layoutPreview.js';
52
58
  export { bewaarElementen, bewaarPrinter, bewaarVersie, dupliceerLayout, maakLayout, maakPrintJob, toggleKoppeling, updateJobStatus, updateLayout, useLayoutDetail, useLayouts, usePrintJobs, usePrintPlekNamen, usePrinters, useVersies, verwijderLayout, verwijderPrinter, zorgVoorFloridayLayouts } from './lib/useDocumentData.js';
53
59
  export { jobPickstation, jobPlekLabel, jobPrintPlekId, jobWerkplek } from './lib/printQueue.js';
54
- export { beschikbareLayouts, beschikbarePrinters, printDocument, printPdf, printHtml, printerVoorWerkplek, printerVoorDocumenttype, printerVoorLayout, volgJobStatus, DubbeleAanvraagFout, } from './lib/printApi.js';
60
+ export { beschikbareLayouts, beschikbarePrinters, printDocument, printPdf, printHtml, printVerzendbriefVoorKar, printerVoorWerkplek, printerVoorDocumenttype, printerVoorLayout, volgJobStatus, DubbeleAanvraagFout, } from './lib/printApi.js';
55
61
  export { printDirect } from './lib/directPrint.js';
56
62
  export { htmlNaarPdfBase64 } from './lib/documentPdf.js';
57
63
  export { supabase } from './lib/supabaseClient.js';
@@ -69,7 +75,7 @@ export { GeenPrinterFout } from './lib/printApi.js';
69
75
  export const layoutmodule = {
70
76
  id: "layout-maker",
71
77
  name: "Layouts en printers",
72
- version: "1.36.3",
78
+ version: "1.45.7",
73
79
  nav: {
74
80
  label: "Layouts en printers",
75
81
  href: "/layouts-printers/documenten",