@flowselections/layout-maker 1.51.2 → 1.51.4
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.
- package/dist-lib/components/AfdrukKnop.js +64 -64
- package/dist-lib/components/NetwerkPrintersDialog.js +79 -79
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +4 -31688
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/auth-middleware.js +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +2 -31688
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +1 -31688
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +3159 -92
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/aiLayout.functions.d.ts +1 -31688
- package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
- package/dist-lib/lib/printService.functions.d.ts +5 -158440
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// ============================================================================
|
|
3
|
-
// src/components/AfdrukKnop.tsx — afdrukken met automatisch ingesteld
|
|
4
|
-
// papierformaat, stand en de bedoelde printer. Waar mogelijk gaat het
|
|
5
|
-
// document direct naar de printer; anders opent het printvenster.
|
|
6
|
-
// ============================================================================
|
|
7
|
-
import { useState } from "react";
|
|
8
|
-
import { Button, toast } from "@flowselections/core";
|
|
9
|
-
import { Loader2, Printer } from "lucide-react";
|
|
10
|
-
import { drukAf } from "../lib/browserPrint.js";
|
|
11
|
-
import { printDirect } from "../lib/directPrint.js";
|
|
12
|
-
/**
|
|
13
|
-
* @deprecated Verouderd — deze knop gebruikt het browser-printvenster als
|
|
14
|
-
* terugval. Gebruik `printHtml()` / `printPdf()` uit `printApi` zodat alles
|
|
15
|
-
* via PrintNode loopt.
|
|
16
|
-
*/
|
|
17
|
-
export function AfdrukKnop({ documenttype, formaatCode, orientatie, getHtml, css, documentnaam, label = "Afdrukken", layoutId, kopieen, }) {
|
|
18
|
-
const [bezig, setBezig] = useState(false);
|
|
19
|
-
const afdrukken = async () => {
|
|
20
|
-
setBezig(true);
|
|
21
|
-
try {
|
|
22
|
-
const html = getHtml();
|
|
23
|
-
const direct = await printDirect({
|
|
24
|
-
documenttype,
|
|
25
|
-
formaatCode,
|
|
26
|
-
orientatie,
|
|
27
|
-
html,
|
|
28
|
-
css,
|
|
29
|
-
documentnaam,
|
|
30
|
-
layoutId: layoutId ?? null,
|
|
31
|
-
kopieen,
|
|
32
|
-
});
|
|
33
|
-
if (direct.gelukt) {
|
|
34
|
-
toast.success(direct.printernaam
|
|
35
|
-
? `Verstuurd naar ${direct.printernaam}`
|
|
36
|
-
: "Het document is naar de printer verstuurd");
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (direct.reden)
|
|
40
|
-
toast.error(direct.reden);
|
|
41
|
-
const { printer } = await drukAf({
|
|
42
|
-
documenttype,
|
|
43
|
-
formaatCode,
|
|
44
|
-
orientatie,
|
|
45
|
-
html,
|
|
46
|
-
css,
|
|
47
|
-
documentnaam,
|
|
48
|
-
});
|
|
49
|
-
if (printer) {
|
|
50
|
-
toast.info(`Kies in het printvenster: ${printer.systeemnaam ?? printer.naam}`);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
toast.info("Er is nog geen vaste printer ingesteld voor dit document.");
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
toast.error("Afdrukken mislukt");
|
|
58
|
-
}
|
|
59
|
-
finally {
|
|
60
|
-
setBezig(false);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
return (_jsxs(Button, { variant: "outline", disabled: bezig, onClick: () => void afdrukken(), children: [bezig ? _jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }) : _jsx(Printer, { className: "mr-2 h-4 w-4" }), label] }));
|
|
64
|
-
}
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// src/components/AfdrukKnop.tsx — afdrukken met automatisch ingesteld
|
|
4
|
+
// papierformaat, stand en de bedoelde printer. Waar mogelijk gaat het
|
|
5
|
+
// document direct naar de printer; anders opent het printvenster.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { useState } from "react";
|
|
8
|
+
import { Button, toast } from "@flowselections/core";
|
|
9
|
+
import { Loader2, Printer } from "lucide-react";
|
|
10
|
+
import { drukAf } from "../lib/browserPrint.js";
|
|
11
|
+
import { printDirect } from "../lib/directPrint.js";
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated Verouderd — deze knop gebruikt het browser-printvenster als
|
|
14
|
+
* terugval. Gebruik `printHtml()` / `printPdf()` uit `printApi` zodat alles
|
|
15
|
+
* via PrintNode loopt.
|
|
16
|
+
*/
|
|
17
|
+
export function AfdrukKnop({ documenttype, formaatCode, orientatie, getHtml, css, documentnaam, label = "Afdrukken", layoutId, kopieen, }) {
|
|
18
|
+
const [bezig, setBezig] = useState(false);
|
|
19
|
+
const afdrukken = async () => {
|
|
20
|
+
setBezig(true);
|
|
21
|
+
try {
|
|
22
|
+
const html = getHtml();
|
|
23
|
+
const direct = await printDirect({
|
|
24
|
+
documenttype,
|
|
25
|
+
formaatCode,
|
|
26
|
+
orientatie,
|
|
27
|
+
html,
|
|
28
|
+
css,
|
|
29
|
+
documentnaam,
|
|
30
|
+
layoutId: layoutId ?? null,
|
|
31
|
+
kopieen,
|
|
32
|
+
});
|
|
33
|
+
if (direct.gelukt) {
|
|
34
|
+
toast.success(direct.printernaam
|
|
35
|
+
? `Verstuurd naar ${direct.printernaam}`
|
|
36
|
+
: "Het document is naar de printer verstuurd");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (direct.reden)
|
|
40
|
+
toast.error(direct.reden);
|
|
41
|
+
const { printer } = await drukAf({
|
|
42
|
+
documenttype,
|
|
43
|
+
formaatCode,
|
|
44
|
+
orientatie,
|
|
45
|
+
html,
|
|
46
|
+
css,
|
|
47
|
+
documentnaam,
|
|
48
|
+
});
|
|
49
|
+
if (printer) {
|
|
50
|
+
toast.info(`Kies in het printvenster: ${printer.systeemnaam ?? printer.naam}`);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
toast.info("Er is nog geen vaste printer ingesteld voor dit document.");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
toast.error("Afdrukken mislukt");
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
setBezig(false);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return (_jsxs(Button, { variant: "outline", disabled: bezig, onClick: () => void afdrukken(), children: [bezig ? _jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }) : _jsx(Printer, { className: "mr-2 h-4 w-4" }), label] }));
|
|
64
|
+
}
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// ============================================================================
|
|
3
|
-
// src/components/NetwerkPrintersDialog.tsx — printers uit het netwerk zoeken,
|
|
4
|
-
// toevoegen of koppelen aan een bestaande printer.
|
|
5
|
-
// ============================================================================
|
|
6
|
-
import { useCallback, useEffect, useState } from "react";
|
|
7
|
-
import { Button, Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, toast, } from "@flowselections/core";
|
|
8
|
-
import { Loader2, Printer, RefreshCw } from "lucide-react";
|
|
9
|
-
import { supabase } from "../lib/supabaseClient.js";
|
|
10
|
-
import { netwerkPrinters } from "../lib/printService.functions.js";
|
|
11
|
-
export function NetwerkPrintersDialog({ open, onOpenChange, huidigePrinterId, huidigePrinterNaam, onKlaar, }) {
|
|
12
|
-
const [bezig, setBezig] = useState(false);
|
|
13
|
-
const [fout, setFout] = useState(null);
|
|
14
|
-
const [lijst, setLijst] = useState([]);
|
|
15
|
-
const zoeken = useCallback(async () => {
|
|
16
|
-
setBezig(true);
|
|
17
|
-
setFout(null);
|
|
18
|
-
try {
|
|
19
|
-
const res = await netwerkPrinters({ data: undefined });
|
|
20
|
-
if (!res.ok) {
|
|
21
|
-
setFout(res.fout);
|
|
22
|
-
setLijst([]);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
setLijst(Array.isArray(res.printers) ? res.printers : []);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
setFout("Er kon niet in het netwerk worden gezocht. Probeer het zo opnieuw.");
|
|
30
|
-
}
|
|
31
|
-
finally {
|
|
32
|
-
setBezig(false);
|
|
33
|
-
}
|
|
34
|
-
}, []);
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
if (open)
|
|
37
|
-
void zoeken();
|
|
38
|
-
}, [open, zoeken]);
|
|
39
|
-
const toevoegen = async (p) => {
|
|
40
|
-
try {
|
|
41
|
-
const { error } = await supabase.from("printers").insert({
|
|
42
|
-
naam: p.naam,
|
|
43
|
-
systeemnaam: p.naam,
|
|
44
|
-
locatie: p.computer,
|
|
45
|
-
omschrijving: p.omschrijving,
|
|
46
|
-
online: p.online,
|
|
47
|
-
actief: true,
|
|
48
|
-
extern_printer_id: p.id,
|
|
49
|
-
});
|
|
50
|
-
if (error)
|
|
51
|
-
throw error;
|
|
52
|
-
toast.success(`${p.naam} is toegevoegd`);
|
|
53
|
-
onKlaar?.();
|
|
54
|
-
onOpenChange(false);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
toast.error("Toevoegen mislukt");
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
const koppelen = async (p) => {
|
|
61
|
-
if (!huidigePrinterId)
|
|
62
|
-
return;
|
|
63
|
-
try {
|
|
64
|
-
const { error } = await supabase
|
|
65
|
-
.from("printers")
|
|
66
|
-
.update({ extern_printer_id: p.id, systeemnaam: p.naam, locatie: p.computer })
|
|
67
|
-
.eq("id", huidigePrinterId);
|
|
68
|
-
if (error)
|
|
69
|
-
throw error;
|
|
70
|
-
toast.success("Printer gekoppeld");
|
|
71
|
-
onKlaar?.();
|
|
72
|
-
onOpenChange(false);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
toast.error("Koppelen mislukt");
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "max-w-lg", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Printers in het netwerk" }), _jsx(DialogDescription, { children: "Kies een printer om toe te voegen. Staat een printer er niet bij? Zet dan de computer aan waar de printer op is aangesloten." })] }), _jsxs("div", { className: "space-y-2", children: [bezig && (_jsxs("p", { className: "text-muted-foreground flex items-center gap-2 text-sm", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), " Zoeken\u2026"] })), !bezig && fout && _jsx("p", { className: "text-destructive text-sm", children: fout }), !bezig && !fout && lijst.length === 0 && (_jsx("p", { className: "text-muted-foreground text-sm", children: "Er zijn geen printers gevonden." })), lijst.map((p) => (_jsxs("div", { className: "flex items-center gap-3 rounded-lg border p-3", children: [_jsx(Printer, { className: "text-muted-foreground h-5 w-5" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-sm font-medium", children: p.naam }), _jsxs("p", { className: "text-muted-foreground truncate text-xs", children: [p.computer || "Onbekende computer", " \u00B7 ", p.online ? "online" : "offline"] })] }), huidigePrinterId && (_jsxs(Button, { variant: "outline", size: "sm", onClick: () => void koppelen(p), children: ["Koppelen aan ", huidigePrinterNaam ?? "printer"] })), _jsx(Button, { size: "sm", onClick: () => void toevoegen(p), children: "Toevoegen" })] }, p.id)))] }), _jsx("div", { className: "flex justify-end", children: _jsxs(Button, { variant: "ghost", onClick: () => void zoeken(), disabled: bezig, children: [_jsx(RefreshCw, { className: "mr-2 h-4 w-4" }), " Opnieuw zoeken"] }) })] }) }));
|
|
79
|
-
}
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// src/components/NetwerkPrintersDialog.tsx — printers uit het netwerk zoeken,
|
|
4
|
+
// toevoegen of koppelen aan een bestaande printer.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
import { useCallback, useEffect, useState } from "react";
|
|
7
|
+
import { Button, Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, toast, } from "@flowselections/core";
|
|
8
|
+
import { Loader2, Printer, RefreshCw } from "lucide-react";
|
|
9
|
+
import { supabase } from "../lib/supabaseClient.js";
|
|
10
|
+
import { netwerkPrinters } from "../lib/printService.functions.js";
|
|
11
|
+
export function NetwerkPrintersDialog({ open, onOpenChange, huidigePrinterId, huidigePrinterNaam, onKlaar, }) {
|
|
12
|
+
const [bezig, setBezig] = useState(false);
|
|
13
|
+
const [fout, setFout] = useState(null);
|
|
14
|
+
const [lijst, setLijst] = useState([]);
|
|
15
|
+
const zoeken = useCallback(async () => {
|
|
16
|
+
setBezig(true);
|
|
17
|
+
setFout(null);
|
|
18
|
+
try {
|
|
19
|
+
const res = await netwerkPrinters({ data: undefined });
|
|
20
|
+
if (!res.ok) {
|
|
21
|
+
setFout(res.fout);
|
|
22
|
+
setLijst([]);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
setLijst(Array.isArray(res.printers) ? res.printers : []);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
setFout("Er kon niet in het netwerk worden gezocht. Probeer het zo opnieuw.");
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
setBezig(false);
|
|
33
|
+
}
|
|
34
|
+
}, []);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (open)
|
|
37
|
+
void zoeken();
|
|
38
|
+
}, [open, zoeken]);
|
|
39
|
+
const toevoegen = async (p) => {
|
|
40
|
+
try {
|
|
41
|
+
const { error } = await supabase.from("printers").insert({
|
|
42
|
+
naam: p.naam,
|
|
43
|
+
systeemnaam: p.naam,
|
|
44
|
+
locatie: p.computer,
|
|
45
|
+
omschrijving: p.omschrijving,
|
|
46
|
+
online: p.online,
|
|
47
|
+
actief: true,
|
|
48
|
+
extern_printer_id: p.id,
|
|
49
|
+
});
|
|
50
|
+
if (error)
|
|
51
|
+
throw error;
|
|
52
|
+
toast.success(`${p.naam} is toegevoegd`);
|
|
53
|
+
onKlaar?.();
|
|
54
|
+
onOpenChange(false);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
toast.error("Toevoegen mislukt");
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const koppelen = async (p) => {
|
|
61
|
+
if (!huidigePrinterId)
|
|
62
|
+
return;
|
|
63
|
+
try {
|
|
64
|
+
const { error } = await supabase
|
|
65
|
+
.from("printers")
|
|
66
|
+
.update({ extern_printer_id: p.id, systeemnaam: p.naam, locatie: p.computer })
|
|
67
|
+
.eq("id", huidigePrinterId);
|
|
68
|
+
if (error)
|
|
69
|
+
throw error;
|
|
70
|
+
toast.success("Printer gekoppeld");
|
|
71
|
+
onKlaar?.();
|
|
72
|
+
onOpenChange(false);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
toast.error("Koppelen mislukt");
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "max-w-lg", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Printers in het netwerk" }), _jsx(DialogDescription, { children: "Kies een printer om toe te voegen. Staat een printer er niet bij? Zet dan de computer aan waar de printer op is aangesloten." })] }), _jsxs("div", { className: "space-y-2", children: [bezig && (_jsxs("p", { className: "text-muted-foreground flex items-center gap-2 text-sm", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), " Zoeken\u2026"] })), !bezig && fout && _jsx("p", { className: "text-destructive text-sm", children: fout }), !bezig && !fout && lijst.length === 0 && (_jsx("p", { className: "text-muted-foreground text-sm", children: "Er zijn geen printers gevonden." })), lijst.map((p) => (_jsxs("div", { className: "flex items-center gap-3 rounded-lg border p-3", children: [_jsx(Printer, { className: "text-muted-foreground h-5 w-5" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-sm font-medium", children: p.naam }), _jsxs("p", { className: "text-muted-foreground truncate text-xs", children: [p.computer || "Onbekende computer", " \u00B7 ", p.online ? "online" : "offline"] })] }), huidigePrinterId && (_jsxs(Button, { variant: "outline", size: "sm", onClick: () => void koppelen(p), children: ["Koppelen aan ", huidigePrinterNaam ?? "printer"] })), _jsx(Button, { size: "sm", onClick: () => void toevoegen(p), children: "Toevoegen" })] }, p.id)))] }), _jsx("div", { className: "flex justify-end", children: _jsxs(Button, { variant: "ghost", onClick: () => void zoeken(), disabled: bezig, children: [_jsx(RefreshCw, { className: "mr-2 h-4 w-4" }), " Opnieuw zoeken"] }) })] }) }));
|
|
79
|
+
}
|