@flowselections/layout-maker 1.45.9 → 1.46.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 (96) hide show
  1. package/README.md +139 -139
  2. package/dist-lib/components/AfdrukKnop.d.ts +19 -19
  3. package/dist-lib/components/AfdrukKnop.js +64 -64
  4. package/dist-lib/components/DocumentenPage.d.ts.map +1 -1
  5. package/dist-lib/components/DocumentenPage.js +2 -3
  6. package/dist-lib/components/NetwerkPrintersDialog.d.ts +7 -7
  7. package/dist-lib/components/NetwerkPrintersDialog.js +79 -79
  8. package/dist-lib/components/PakbonPreview.d.ts.map +1 -1
  9. package/dist-lib/components/PakbonPreview.js +2 -2
  10. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  11. package/dist-lib/components/PrintQueuePage.js +45 -74
  12. package/dist-lib/components/PrintenPage.d.ts.map +1 -1
  13. package/dist-lib/components/PrintenPage.js +2 -3
  14. package/dist-lib/components/PrinterSetupWizard.d.ts.map +1 -1
  15. package/dist-lib/components/PrinterSetupWizard.js +5 -28
  16. package/dist-lib/components/PrintersRedirectPage.d.ts +1 -1
  17. package/dist-lib/components/PrintersRedirectPage.js +14 -14
  18. package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
  19. package/dist-lib/components/PrintplekDetailPage.js +3 -25
  20. package/dist-lib/components/PrintplekWizard.d.ts.map +1 -1
  21. package/dist-lib/components/PrintplekWizard.js +3 -85
  22. package/dist-lib/index.d.ts +1 -8
  23. package/dist-lib/index.d.ts.map +1 -1
  24. package/dist-lib/index.js +1 -10
  25. package/dist-lib/integrations/supabase/auth-middleware.d.ts +5386 -289
  26. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  27. package/dist-lib/integrations/supabase/client.server.d.ts +5386 -289
  28. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  29. package/dist-lib/integrations/supabase/client.server.js +1 -1
  30. package/dist-lib/integrations/supabase/moduleClient.d.ts +5386 -289
  31. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
  32. package/dist-lib/integrations/supabase/types.d.ts +5404 -243
  33. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  34. package/dist-lib/lib/aiLayout.functions.d.ts +5386 -289
  35. package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
  36. package/dist-lib/lib/aiLayout.server.js +9 -9
  37. package/dist-lib/lib/browserPrint.js +1 -1
  38. package/dist-lib/lib/fieldRegistry.js +1 -0
  39. package/dist-lib/lib/layoutPreview.js +7 -7
  40. package/dist-lib/lib/logoLibrary.d.ts +2 -1
  41. package/dist-lib/lib/logoLibrary.d.ts.map +1 -1
  42. package/dist-lib/lib/logoLibrary.js +42 -2
  43. package/dist-lib/lib/orderData.server.d.ts.map +1 -1
  44. package/dist-lib/lib/orderData.server.js +13 -0
  45. package/dist-lib/lib/pakbonBuilder.d.ts +26 -0
  46. package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
  47. package/dist-lib/lib/pakbonBuilder.js +37 -0
  48. package/dist-lib/lib/pakbonContent.d.ts.map +1 -1
  49. package/dist-lib/lib/pakbonContent.js +2 -2
  50. package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
  51. package/dist-lib/lib/pakbonHtml.js +60 -60
  52. package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -1
  53. package/dist-lib/lib/pakbonPresentation.js +2 -4
  54. package/dist-lib/lib/printApi.d.ts +0 -2
  55. package/dist-lib/lib/printApi.d.ts.map +1 -1
  56. package/dist-lib/lib/printApi.js +0 -21
  57. package/dist-lib/lib/printQueue.server.d.ts +8 -0
  58. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  59. package/dist-lib/lib/printQueue.server.js +162 -66
  60. package/dist-lib/lib/printService.functions.d.ts +51639 -52
  61. package/dist-lib/lib/printService.functions.d.ts.map +1 -1
  62. package/dist-lib/lib/printService.functions.js +69 -0
  63. package/dist-lib/lib/printService.server.d.ts +2 -0
  64. package/dist-lib/lib/printService.server.d.ts.map +1 -1
  65. package/dist-lib/lib/printService.server.js +10 -0
  66. package/dist-lib/lib/productiebonHtml.js +15 -15
  67. package/dist-lib/lib/profielHtml.d.ts.map +1 -1
  68. package/dist-lib/lib/profielHtml.js +22 -19
  69. package/dist-lib/lib/supabaseAdmin.server.d.ts +5 -5
  70. package/dist-lib/lib/supabaseAdmin.server.js +43 -43
  71. package/dist-lib/lib/testpagina.js +3 -3
  72. package/dist-lib/lib/testprint.js +4 -4
  73. package/dist-lib/lib/voorbeeldPrint.d.ts.map +1 -1
  74. package/dist-lib/lib/voorbeeldPrint.js +7 -39
  75. package/package.json +3 -3
  76. package/dist-lib/components/PdfMapAutoSaver.d.ts +0 -6
  77. package/dist-lib/components/PdfMapAutoSaver.d.ts.map +0 -1
  78. package/dist-lib/components/PdfMapAutoSaver.js +0 -12
  79. package/dist-lib/components/PdfMapGlobaleBanner.d.ts +0 -12
  80. package/dist-lib/components/PdfMapGlobaleBanner.d.ts.map +0 -1
  81. package/dist-lib/components/PdfMapGlobaleBanner.js +0 -30
  82. package/dist-lib/components/PdfMapToestemmingBanner.d.ts +0 -8
  83. package/dist-lib/components/PdfMapToestemmingBanner.d.ts.map +0 -1
  84. package/dist-lib/components/PdfMapToestemmingBanner.js +0 -245
  85. package/dist-lib/lib/pdfJobSaver.d.ts +0 -24
  86. package/dist-lib/lib/pdfJobSaver.d.ts.map +0 -1
  87. package/dist-lib/lib/pdfJobSaver.js +0 -376
  88. package/dist-lib/lib/pdfMap.d.ts +0 -83
  89. package/dist-lib/lib/pdfMap.d.ts.map +0 -1
  90. package/dist-lib/lib/pdfMap.js +0 -332
  91. package/dist-lib/lib/pdfOpslagStatus.d.ts +0 -23
  92. package/dist-lib/lib/pdfOpslagStatus.d.ts.map +0 -1
  93. package/dist-lib/lib/pdfOpslagStatus.js +0 -74
  94. package/dist-lib/lib/pdfPrinter.d.ts +0 -9
  95. package/dist-lib/lib/pdfPrinter.d.ts.map +0 -1
  96. package/dist-lib/lib/pdfPrinter.js +0 -34
@@ -52,6 +52,75 @@ export const printStatus = createServerFn({ method: "POST" })
52
52
  return { ok: false, fout: e instanceof Error ? e.message : "Status ophalen mislukt" };
53
53
  }
54
54
  });
55
+ export const annuleerPrintOpdrachten = createServerFn({ method: "POST" })
56
+ .middleware([requireSupabaseAuth])
57
+ .inputValidator((input) => ({
58
+ jobIds: Array.isArray(input?.jobIds)
59
+ ? input.jobIds.filter((id) => typeof id === "string" && id.length > 0).slice(0, 200)
60
+ : [],
61
+ }))
62
+ .handler(async ({ data, context }) => {
63
+ // De server bepaalt de grens. Zo vallen ook opdrachten mee die al geclaimd
64
+ // zijn maar nog niet in de browserlijst stonden, terwijl later aangemaakte
65
+ // opdrachten direct normaal kunnen worden verwerkt.
66
+ const cutoff = new Date().toISOString();
67
+ let openJobs = [];
68
+ if (data.jobIds.length === 0) {
69
+ const { data: openData, error: annuleerFout } = await context.supabase.rpc("cancel_open_print_jobs", { _cutoff: cutoff });
70
+ if (annuleerFout)
71
+ throw new Error(`Annuleren mislukt: ${annuleerFout.message}`);
72
+ openJobs = Array.isArray(openData) ? openData : [];
73
+ }
74
+ else {
75
+ const { data: geselecteerd, error: leesFout } = await context.supabase
76
+ .from("print_jobs")
77
+ .select("id, extern_job_id")
78
+ .in("id", data.jobIds)
79
+ .in("status", ["wachtend", "bezig"]);
80
+ if (leesFout)
81
+ throw new Error(`Printopdracht ophalen mislukt: ${leesFout.message}`);
82
+ openJobs = Array.isArray(geselecteerd) ? geselecteerd : [];
83
+ const ids = openJobs.map((job) => job.id);
84
+ if (ids.length > 0) {
85
+ const { error: wijzigFout } = await context.supabase
86
+ .from("print_jobs")
87
+ .update({
88
+ status: "geannuleerd",
89
+ verwerkingsfase: "geannuleerd",
90
+ fase_voltooid_op: cutoff,
91
+ lokale_pdf_status: "geannuleerd",
92
+ lokale_pdf_fout: null,
93
+ lokale_pdf_claim_id: null,
94
+ lokale_pdf_claim_tot: null,
95
+ volgende_poging: null,
96
+ voltooid_op: cutoff,
97
+ updated_at: cutoff,
98
+ })
99
+ .in("id", ids)
100
+ .in("status", ["wachtend", "bezig"]);
101
+ if (wijzigFout)
102
+ throw new Error(`Annuleren mislukt: ${wijzigFout.message}`);
103
+ }
104
+ }
105
+ if (openJobs.length === 0)
106
+ return { geannuleerd: 0, externMislukt: 0 };
107
+ const ids = openJobs.map((job) => String(job.id));
108
+ await context.supabase.from("print_job_logs").insert(ids.map((jobId) => ({
109
+ job_id: jobId,
110
+ gebeurtenis: "geannuleerd",
111
+ detail: "Handmatig geannuleerd vanuit de printwachtrij.",
112
+ })));
113
+ const externeIds = openJobs
114
+ .map((job) => String(job.extern_job_id ?? "").trim())
115
+ .filter(Boolean);
116
+ let externMislukt = 0;
117
+ if (externeIds.length > 0) {
118
+ const { annuleerExternePrintOpdracht } = await import("./printService.server.js");
119
+ const resultaten = await Promise.allSettled(externeIds.map(annuleerExternePrintOpdracht));
120
+ externMislukt = resultaten.filter((resultaat) => resultaat.status === "rejected").length;
121
+ }
122
+ return { geannuleerd: ids.length, externMislukt, cutoff };
123
+ });
55
124
  export const netwerkComputers = createServerFn({ method: "POST" })
56
125
  .middleware([requireSupabaseAuth])
57
126
  .handler(async () => {
@@ -35,6 +35,8 @@ export declare function haalPrinterFormaten(externPrinterId: string): Promise<{
35
35
  }>;
36
36
  /** Stuurt een PDF rechtstreeks naar de printer. Geeft het externe opdrachtnummer terug. */
37
37
  export declare function stuurPdfNaarPrinter(input: PrintOpdrachtInput): Promise<string>;
38
+ /** Verwijdert een nog niet afgedrukte opdracht bij de externe printdienst. */
39
+ export declare function annuleerExternePrintOpdracht(externJobId: string): Promise<void>;
38
40
  export type OpdrachtStatus = "wachtend" | "bezig" | "voltooid" | "mislukt";
39
41
  /** Vraagt de status van een verstuurde opdracht op. */
40
42
  export declare function opdrachtStatus(externJobId: string): Promise<OpdrachtStatus>;
@@ -1 +1 @@
1
- {"version":3,"file":"printService.server.d.ts","sourceRoot":"","sources":["../../src/lib/printService.server.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1C,oDAAoD;IACpD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAmDD,6EAA6E;AAC7E,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAmBrE;AAED,gFAAgF;AAChF,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CASzE;AAED,2FAA2F;AAC3F,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBpF;AAGD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3E,uDAAuD;AACvD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAejF;AAED,yCAAyC;AACzC,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGpD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qDAAqD;AACrD,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAchE"}
1
+ {"version":3,"file":"printService.server.d.ts","sourceRoot":"","sources":["../../src/lib/printService.server.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1C,oDAAoD;IACpD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAoDD,6EAA6E;AAC7E,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAmBrE;AAED,gFAAgF;AAChF,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CASzE;AAED,2FAA2F;AAC3F,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBpF;AAED,8EAA8E;AAC9E,wBAAsB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrF;AAGD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3E,uDAAuD;AACvD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAejF;AAED,yCAAyC;AACzC,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGpD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qDAAqD;AACrD,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAchE"}
@@ -49,6 +49,8 @@ async function vraag(pad, init) {
49
49
  if (!res.ok) {
50
50
  throw new PrintToegangFout("niet_bereikbaar", "De printdienst is tijdelijk niet bereikbaar. Probeer het zo opnieuw.");
51
51
  }
52
+ if (res.status === 204)
53
+ return undefined;
52
54
  return (await res.json());
53
55
  }
54
56
  /** Alle printers die via de printclients in het netwerk beschikbaar zijn. */
@@ -102,6 +104,14 @@ export async function stuurPdfNaarPrinter(input) {
102
104
  });
103
105
  return String(data);
104
106
  }
107
+ /** Verwijdert een nog niet afgedrukte opdracht bij de externe printdienst. */
108
+ export async function annuleerExternePrintOpdracht(externJobId) {
109
+ if (!externJobId.trim())
110
+ return;
111
+ await vraag(`/printjobs/${encodeURIComponent(externJobId)}`, {
112
+ method: "DELETE",
113
+ });
114
+ }
105
115
  /** Vraagt de status van een verstuurde opdracht op. */
106
116
  export async function opdrachtStatus(externJobId) {
107
117
  const data = await vraag(`/printjobs/${encodeURIComponent(externJobId)}/states`);
@@ -147,20 +147,20 @@ export function renderProductiebonDocument(config, gegevens, opties = {}) {
147
147
  return inhoud ? `<div class="blok">${inhoud}</div>` : "";
148
148
  })
149
149
  .join("");
150
- return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
151
- <title>${esc(opties.titel ?? "Productiebon")}</title>
152
- <style>
153
- @page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
154
- * { box-sizing: border-box; }
155
- html, body { margin: 0; padding: 0; }
156
- body { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #111827; line-height: 1.35; }
157
- .blok { margin-bottom: 2.5mm; }
158
- .sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
159
- .vet { font-weight: 600; }
160
- .kv { display: flex; justify-content: space-between; gap: 3mm; }
161
- .kv .k { color: #6b7280; }
162
- .tabel { width: 100%; border-collapse: collapse; table-layout: fixed; }
163
- .tabel th { text-align: left; font-weight: 600; }
164
- .regel { padding: 0.4mm 0; }
150
+ return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
151
+ <title>${esc(opties.titel ?? "Productiebon")}</title>
152
+ <style>
153
+ @page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
154
+ * { box-sizing: border-box; }
155
+ html, body { margin: 0; padding: 0; }
156
+ body { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #111827; line-height: 1.35; }
157
+ .blok { margin-bottom: 2.5mm; }
158
+ .sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
159
+ .vet { font-weight: 600; }
160
+ .kv { display: flex; justify-content: space-between; gap: 3mm; }
161
+ .kv .k { color: #6b7280; }
162
+ .tabel { width: 100%; border-collapse: collapse; table-layout: fixed; }
163
+ .tabel th { text-align: left; font-weight: 600; }
164
+ .regel { padding: 0.4mm 0; }
165
165
  </style></head><body>${body}</body></html>`;
166
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profielHtml.d.ts","sourceRoot":"","sources":["../../src/lib/profielHtml.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAuND,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAWjF;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,MAAM,GAAE,mBAAwB,GAC/B,MAAM,CAwCR"}
1
+ {"version":3,"file":"profielHtml.d.ts","sourceRoot":"","sources":["../../src/lib/profielHtml.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA2ND,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAWjF;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,MAAM,GAAE,mBAAwB,GAC/B,MAAM,CAwCR"}
@@ -117,8 +117,8 @@ function regeltabel(regels) {
117
117
  const eenheid = r["eenheid"] ?? "";
118
118
  return `<tr><td>${esc(code)}</td><td>${esc(omschrijving)}</td><td style="text-align:right">${esc(aantal)}</td><td>${esc(eenheid)}</td></tr>`;
119
119
  };
120
- return `<table class="tabel"><colgroup><col style="width:20%" /><col style="width:52%" /><col style="width:16%" /><col style="width:12%" /></colgroup>
121
- <thead><tr class="onder"><th>Code</th><th>Omschrijving</th><th style="text-align:right">Aantal</th><th>Eenheid</th></tr></thead>
120
+ return `<table class="tabel"><colgroup><col style="width:20%" /><col style="width:52%" /><col style="width:16%" /><col style="width:12%" /></colgroup>
121
+ <thead><tr class="onder"><th>Code</th><th>Omschrijving</th><th style="text-align:right">Aantal</th><th>Eenheid</th></tr></thead>
122
122
  <tbody>${regels.map(rij).join("")}</tbody></table>`;
123
123
  }
124
124
  function totalenBlok(regels, velden) {
@@ -166,7 +166,10 @@ function groepHtml(groep, config, velden, data, opties) {
166
166
  delen.push(totalenBlok(zoekRegels(data), velden));
167
167
  }
168
168
  else if (inst.key === "toon_afbeelding" || inst.key === "afbeelding") {
169
- const url = velden["afbeelding"] ?? velden["regel.afbeelding"] ?? velden["product.afbeelding"] ?? "";
169
+ const url = velden["afbeelding"] ??
170
+ velden["regel.afbeelding"] ??
171
+ velden["product.afbeelding"] ??
172
+ String(zoekRegels(data).find((r) => r["afbeelding"])?.["afbeelding"] ?? "");
170
173
  delen.push(url
171
174
  ? `<img src="${esc(url)}" style="height:35mm" />`
172
175
  : `<div class="lijnveld hoog"></div>`);
@@ -243,21 +246,21 @@ export function renderProfielDocument(documenttype, config, gegevens, opties = {
243
246
  .map((groep) => groepHtml(groep, cfg, velden, data, opties))
244
247
  .filter(Boolean)
245
248
  .join("");
246
- return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
247
- <title>${esc(opties.titel ?? profiel.label)}</title>
248
- <style>
249
- @page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
250
- * { box-sizing: border-box; }
251
- html, body { margin: 0; padding: 0; }
252
- body { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #111827; line-height: 1.35; }
253
- .blok { margin-bottom: 2.5mm; }
254
- .kop { border-bottom: 0.3mm solid #d1d5db; padding-bottom: 1mm; }
255
- .sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
256
- .vet { font-weight: 600; }
257
- .klein { font-size: 85%; color: #6b7280; }
258
- .kv { display: flex; justify-content: space-between; gap: 3mm; }
259
- .kv .k { color: #6b7280; }
260
- .tabel { width: 100%; border-collapse: collapse; table-layout: fixed; }
261
- .tabel th { text-align: left; font-weight: 600; }
249
+ return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
250
+ <title>${esc(opties.titel ?? profiel.label)}</title>
251
+ <style>
252
+ @page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
253
+ * { box-sizing: border-box; }
254
+ html, body { margin: 0; padding: 0; }
255
+ body { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #111827; line-height: 1.35; }
256
+ .blok { margin-bottom: 2.5mm; }
257
+ .kop { border-bottom: 0.3mm solid #d1d5db; padding-bottom: 1mm; }
258
+ .sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
259
+ .vet { font-weight: 600; }
260
+ .klein { font-size: 85%; color: #6b7280; }
261
+ .kv { display: flex; justify-content: space-between; gap: 3mm; }
262
+ .kv .k { color: #6b7280; }
263
+ .tabel { width: 100%; border-collapse: collapse; table-layout: fixed; }
264
+ .tabel th { text-align: left; font-weight: 600; }
262
265
  </style></head><body>${kop}${body}</body></html>`;
263
266
  }
@@ -1,6 +1,6 @@
1
- import { type SupabaseClient } from "@supabase/supabase-js";
2
- /** Uitleg voor de gebruiker als de serverinstellingen ontbreken. */
3
- export declare function adminConfiguratieFout(): string | null;
4
- /** Lazy adminclient: pas bij het eerste gebruik worden de instellingen gelezen. */
5
- export declare const adminDb: SupabaseClient<any, any, any, any, any>;
1
+ import { type SupabaseClient } from "@supabase/supabase-js";
2
+ /** Uitleg voor de gebruiker als de serverinstellingen ontbreken. */
3
+ export declare function adminConfiguratieFout(): string | null;
4
+ /** Lazy adminclient: pas bij het eerste gebruik worden de instellingen gelezen. */
5
+ export declare const adminDb: SupabaseClient<any, any, any, any, any>;
6
6
  //# sourceMappingURL=supabaseAdmin.server.d.ts.map
@@ -1,43 +1,43 @@
1
- // ============================================================================
2
- // src/lib/supabaseAdmin.server.ts — adminclient die in elke shell werkt.
3
- // Leest de service-role sleutel uit meerdere mogelijke namen, zodat de module
4
- // niet afhankelijk is van hoe een shell zijn omgeving heeft ingericht.
5
- // ============================================================================
6
- import { createClient } from "@supabase/supabase-js";
7
- function lees(...namen) {
8
- for (const naam of namen) {
9
- const waarde = process.env[naam];
10
- if (waarde && waarde.trim().length > 0)
11
- return waarde.trim();
12
- }
13
- return undefined;
14
- }
15
- /** Uitleg voor de gebruiker als de serverinstellingen ontbreken. */
16
- export function adminConfiguratieFout() {
17
- const url = lees("SUPABASE_URL", "VITE_SUPABASE_URL");
18
- const key = lees("SERVICE_ROLE_KEY", "SUPABASE_SERVICE_ROLE_KEY");
19
- if (url && key)
20
- return null;
21
- const mist = [!url ? "SUPABASE_URL" : null, !key ? "SERVICE_ROLE_KEY" : null]
22
- .filter(Boolean)
23
- .join(" en ");
24
- return `Achtergrondprinten is niet ingesteld: ${mist} ontbreekt in deze omgeving.`;
25
- }
26
- function maakClient() {
27
- const url = lees("SUPABASE_URL", "VITE_SUPABASE_URL");
28
- const key = lees("SERVICE_ROLE_KEY", "SUPABASE_SERVICE_ROLE_KEY");
29
- if (!url || !key)
30
- throw new Error(adminConfiguratieFout() ?? "Serverinstellingen ontbreken.");
31
- return createClient(url, key, {
32
- auth: { storage: undefined, persistSession: false, autoRefreshToken: false },
33
- });
34
- }
35
- let _client;
36
- /** Lazy adminclient: pas bij het eerste gebruik worden de instellingen gelezen. */
37
- export const adminDb = new Proxy({}, {
38
- get(_t, prop, receiver) {
39
- if (!_client)
40
- _client = maakClient();
41
- return Reflect.get(_client, prop, receiver);
42
- },
43
- });
1
+ // ============================================================================
2
+ // src/lib/supabaseAdmin.server.ts — adminclient die in elke shell werkt.
3
+ // Leest de service-role sleutel uit meerdere mogelijke namen, zodat de module
4
+ // niet afhankelijk is van hoe een shell zijn omgeving heeft ingericht.
5
+ // ============================================================================
6
+ import { createClient } from "@supabase/supabase-js";
7
+ function lees(...namen) {
8
+ for (const naam of namen) {
9
+ const waarde = process.env[naam];
10
+ if (waarde && waarde.trim().length > 0)
11
+ return waarde.trim();
12
+ }
13
+ return undefined;
14
+ }
15
+ /** Uitleg voor de gebruiker als de serverinstellingen ontbreken. */
16
+ export function adminConfiguratieFout() {
17
+ const url = lees("SUPABASE_URL", "VITE_SUPABASE_URL");
18
+ const key = lees("SERVICE_ROLE_KEY", "SUPABASE_SERVICE_ROLE_KEY");
19
+ if (url && key)
20
+ return null;
21
+ const mist = [!url ? "SUPABASE_URL" : null, !key ? "SERVICE_ROLE_KEY" : null]
22
+ .filter(Boolean)
23
+ .join(" en ");
24
+ return `Achtergrondprinten is niet ingesteld: ${mist} ontbreekt in deze omgeving.`;
25
+ }
26
+ function maakClient() {
27
+ const url = lees("SUPABASE_URL", "VITE_SUPABASE_URL");
28
+ const key = lees("SERVICE_ROLE_KEY", "SUPABASE_SERVICE_ROLE_KEY");
29
+ if (!url || !key)
30
+ throw new Error(adminConfiguratieFout() ?? "Serverinstellingen ontbreken.");
31
+ return createClient(url, key, {
32
+ auth: { storage: undefined, persistSession: false, autoRefreshToken: false },
33
+ });
34
+ }
35
+ let _client;
36
+ /** Lazy adminclient: pas bij het eerste gebruik worden de instellingen gelezen. */
37
+ export const adminDb = new Proxy({}, {
38
+ get(_t, prop, receiver) {
39
+ if (!_client)
40
+ _client = maakClient();
41
+ return Reflect.get(_client, prop, receiver);
42
+ },
43
+ });
@@ -6,9 +6,9 @@
6
6
  import { toast } from "@flowselections/core";
7
7
  import { printHtml, volgJobStatus } from "./printApi.js";
8
8
  export async function drukTestpaginaAf(printerId, naam) {
9
- const html = `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
10
- <h1 style="font-size:20pt;margin:0 0 6mm">Testpagina</h1>
11
- <p style="margin:0 0 3mm">Deze pagina hoort uit: <strong>${naam}</strong></p>
9
+ const html = `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
10
+ <h1 style="font-size:20pt;margin:0 0 6mm">Testpagina</h1>
11
+ <p style="margin:0 0 3mm">Deze pagina hoort uit: <strong>${naam}</strong></p>
12
12
  <p style="margin:0">${new Date().toLocaleString("nl-NL")}</p></div>`;
13
13
  try {
14
14
  const { jobId } = await printHtml({
@@ -42,10 +42,10 @@ function testHtml(velden) {
42
42
  const rijen = Object.entries(velden)
43
43
  .map(([k, v]) => `<tr><td style="padding:2mm 6mm 2mm 0;color:#555">${k}</td><td style="padding:2mm 0;font-weight:600">${v}</td></tr>`)
44
44
  .join("");
45
- return `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
46
- <h1 style="font-size:20pt;margin:0 0 6mm">Testprint</h1>
47
- <p style="margin:0 0 6mm">Komt dit vel uit de bedoelde printer op de bedoelde plek? Dan zijn de instellingen goed.</p>
48
- <table style="border-collapse:collapse;font-size:12pt">${rijen}</table>
45
+ return `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
46
+ <h1 style="font-size:20pt;margin:0 0 6mm">Testprint</h1>
47
+ <p style="margin:0 0 6mm">Komt dit vel uit de bedoelde printer op de bedoelde plek? Dan zijn de instellingen goed.</p>
48
+ <table style="border-collapse:collapse;font-size:12pt">${rijen}</table>
49
49
  </div>`;
50
50
  }
51
51
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"voorbeeldPrint.d.ts","sourceRoot":"","sources":["../../src/lib/voorbeeldPrint.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wFAAwF;AACxF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEzF"}
1
+ {"version":3,"file":"voorbeeldPrint.d.ts","sourceRoot":"","sources":["../../src/lib/voorbeeldPrint.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wFAAwF;AACxF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCzF"}
@@ -5,10 +5,7 @@
5
5
  // zodat de wachtrij niets opnieuw opmaakt.
6
6
  // ============================================================================
7
7
  import { toast } from "@flowselections/core";
8
- import { printHtml, printerAfdrukmethode, printerVoorLayout, volgJobStatus, } from "./printApi.js";
9
- import { lokalePdfPrintplek, pdfMapToestemming } from "./pdfMap.js";
10
- import { printerVoorPrintplek } from "./printplekken.js";
11
- import { isOpslagFout, PDF_OPSLAG_MELDING } from "./pdfOpslagStatus.js";
8
+ import { printHtml, printerVoorLayout, volgJobStatus, } from "./printApi.js";
12
9
  /** Pure opbouw van de opdracht, zodat printplekdoorgifte regressiegetest kan worden. */
13
10
  export function bouwVoorbeeldPrintInvoer(layout, html, printerId, printplekId) {
14
11
  const documenttype = String(layout.documenttype ?? "pakbon");
@@ -47,55 +44,26 @@ export async function voorbeeldPrint(layout, html) {
47
44
  toast.error(`Nog geen printer gekoppeld aan ${naam} — stel dit in bij Printen > Standaardregels.`);
48
45
  return;
49
46
  }
50
- const isPdf = (await printerAfdrukmethode(printerId)) === "pdf";
51
- let printplekId;
52
- if (isPdf) {
53
- const lokalePrintplek = await lokalePdfPrintplek();
54
- if (!lokalePrintplek) {
55
- throw new Error("Deze Mac heeft nog geen PDF-map met printplek. Kies de map opnieuw bij de bedoelde printplek.");
56
- }
57
- const printerOpPlek = await printerVoorPrintplek(lokalePrintplek, documenttype);
58
- if (printerOpPlek !== printerId) {
59
- throw new Error("De PDF-map van deze Mac hoort niet bij de printplek van dit document. Controleer de printer bij deze printplek.");
60
- }
61
- const toestemming = await pdfMapToestemming(printerId);
62
- if (toestemming === "ontbreekt")
63
- throw new Error(PDF_OPSLAG_MELDING.map_ontbreekt);
64
- if (toestemming !== "granted")
65
- throw new Error(PDF_OPSLAG_MELDING.geen_rechten);
66
- printplekId = lokalePrintplek;
67
- }
47
+ const printplekId = undefined;
68
48
  const { jobId } = await printHtml(bouwVoorbeeldPrintInvoer(layout, html, printerId, printplekId));
69
- toast.success(isPdf ? "Voorbeeld wordt in de PDF-map opgeslagen" : "Voorbeeld naar de printer verstuurd");
49
+ toast.success("Voorbeeld naar de printer verstuurd");
70
50
  let afgerond = false;
71
51
  const stop = volgJobStatus(jobId, (s) => {
72
- if (isPdf && s.lokale_pdf_status === "opgeslagen" && s.lokaal_opgeslagen_op) {
73
- afgerond = true;
74
- toast.success("Voorbeeld opgeslagen in de PDF-map");
75
- stop();
76
- }
77
- else if (isPdf && isOpslagFout(s.lokale_pdf_status)) {
78
- afgerond = true;
79
- toast.error(s.lokale_pdf_fout ??
80
- PDF_OPSLAG_MELDING[s.lokale_pdf_status ?? ""] ??
81
- "Voorbeeld kon niet in de PDF-map worden opgeslagen.");
82
- stop();
83
- }
84
- else if (!isPdf && (s.status === "klaar" || s.status === "voltooid")) {
52
+ if (s.status === "klaar" || s.status === "voltooid") {
85
53
  afgerond = true;
86
54
  toast.success("Voorbeeld afgedrukt");
87
55
  stop();
88
56
  }
89
57
  else if (s.status === "mislukt") {
90
58
  afgerond = true;
91
- toast.error(s.lokale_pdf_fout ?? s.foutmelding ?? "Voorbeeld printen mislukt");
59
+ toast.error(s.foutmelding ?? "Voorbeeld printen mislukt");
92
60
  stop();
93
61
  }
94
62
  });
95
63
  window.setTimeout(() => {
96
64
  stop();
97
- if (isPdf && !afgerond) {
98
- toast.error("Het voorbeeld is nog niet opgeslagen. Controleer de opdracht in de printwachtrij.");
65
+ if (!afgerond) {
66
+ toast.error("Het voorbeeld is nog niet afgedrukt. Controleer de opdracht in de printwachtrij.");
99
67
  }
100
68
  }, 5 * 60000);
101
69
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/layout-maker",
3
- "version": "1.45.9",
3
+ "version": "1.46.1",
4
4
  "flowselections": {
5
5
  "moduleId": "layout-maker",
6
6
  "pages": [
@@ -126,8 +126,8 @@
126
126
  "devDependencies": {
127
127
  "@cloudflare/vite-plugin": "^1.25.5",
128
128
  "@eslint/js": "^9.32.0",
129
- "@flowselections/core": "1.0.18",
130
- "@lovable.dev/vite-tanstack-config": "2.13.1",
129
+ "@flowselections/core": "1.0.21",
130
+ "@lovable.dev/vite-tanstack-config": "2.23.1",
131
131
  "@rsbuild/core": "^1.0.0",
132
132
  "@tailwindcss/vite": "^4.2.1",
133
133
  "@tanstack/react-query": "^5.83.0",
@@ -1,6 +0,0 @@
1
- /**
2
- * Schrijft voltooide opdrachten van de virtuele PDF-printer naar de map die
3
- * in deze browser op deze computer is gekozen. Dit component rendert niets.
4
- */
5
- export declare function PdfMapAutoSaver(): null;
6
- //# sourceMappingURL=PdfMapAutoSaver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfMapAutoSaver.d.ts","sourceRoot":"","sources":["../../src/components/PdfMapAutoSaver.tsx"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,eAAe,SAM9B"}
@@ -1,12 +0,0 @@
1
- import { useEffect } from "react";
2
- import { startPdfMapService } from "../lib/pdfJobSaver.js";
3
- /**
4
- * Schrijft voltooide opdrachten van de virtuele PDF-printer naar de map die
5
- * in deze browser op deze computer is gekozen. Dit component rendert niets.
6
- */
7
- export function PdfMapAutoSaver() {
8
- useEffect(() => {
9
- startPdfMapService();
10
- }, []);
11
- return null;
12
- }
@@ -1,12 +0,0 @@
1
- import { type Root } from "react-dom/client";
2
- declare global {
3
- interface Window {
4
- __layoutMakerPdfBannerRoot?: Root;
5
- }
6
- }
7
- /**
8
- * Monteert de mapmelding één keer boven de volledige shell. Zo is de actie ook
9
- * zichtbaar in modules die alleen de print-API gebruiken, zoals Pickstation.
10
- */
11
- export declare function startPdfMapGlobaleBanner(): void;
12
- //# sourceMappingURL=PdfMapGlobaleBanner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfMapGlobaleBanner.d.ts","sourceRoot":"","sources":["../../src/components/PdfMapGlobaleBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAKzD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,0BAA0B,CAAC,EAAE,IAAI,CAAC;KACnC;CACF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAoB/C"}
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createRoot } from "react-dom/client";
3
- import { PdfMapToestemmingBanner } from "./PdfMapToestemmingBanner.js";
4
- const CONTAINER_ID = "layout-maker-pdf-map-banner";
5
- /**
6
- * Monteert de mapmelding één keer boven de volledige shell. Zo is de actie ook
7
- * zichtbaar in modules die alleen de print-API gebruiken, zoals Pickstation.
8
- */
9
- export function startPdfMapGlobaleBanner() {
10
- if (typeof window === "undefined" || window.__layoutMakerPdfBannerRoot)
11
- return;
12
- const monteer = () => {
13
- if (window.__layoutMakerPdfBannerRoot)
14
- return;
15
- const bestaand = document.getElementById(CONTAINER_ID);
16
- const container = bestaand ?? document.createElement("div");
17
- container.id = CONTAINER_ID;
18
- if (!bestaand)
19
- document.body.appendChild(container);
20
- const root = createRoot(container);
21
- window.__layoutMakerPdfBannerRoot = root;
22
- root.render(_jsx(PdfMapToestemmingBanner, { alleenActieNodig: true, zwevend: true }));
23
- };
24
- if (document.readyState === "loading") {
25
- document.addEventListener("DOMContentLoaded", monteer, { once: true });
26
- }
27
- else {
28
- monteer();
29
- }
30
- }
@@ -1,8 +0,0 @@
1
- type PdfMapToestemmingBannerProps = {
2
- alleenActieNodig?: boolean;
3
- zwevend?: boolean;
4
- printplekId?: string;
5
- };
6
- export declare function PdfMapToestemmingBanner({ alleenActieNodig, zwevend, printplekId, }?: PdfMapToestemmingBannerProps): import("react").JSX.Element | null;
7
- export {};
8
- //# sourceMappingURL=PdfMapToestemmingBanner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfMapToestemmingBanner.d.ts","sourceRoot":"","sources":["../../src/components/PdfMapToestemmingBanner.tsx"],"names":[],"mappings":"AA0BA,KAAK,4BAA4B,GAAG;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EACtC,gBAAwB,EACxB,OAAe,EACf,WAAW,GACZ,GAAE,4BAAiC,sCAsTnC"}