module-package-comp 2.3.1 → 2.4.0

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/.prettierrc ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "trailingComma": "all",
3
+ "tabWidth": 2,
4
+ "semi": true
5
+ }
@@ -0,0 +1,6 @@
1
+ type ExtraInfoSectionProps = {
2
+ extraInfo: Record<string, unknown>;
3
+ setExtraInfo: React.Dispatch<React.SetStateAction<Record<string, unknown>>>;
4
+ };
5
+ export declare function ExtraInfoSection({ extraInfo, setExtraInfo, }: ExtraInfoSectionProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ export function ExtraInfoSection({ extraInfo, setExtraInfo, }) {
4
+ const [newKey, setNewKey] = useState("");
5
+ const [newValueType, setNewValueType] = useState("text");
6
+ const [newValue, setNewValue] = useState("");
7
+ const handleAdd = () => {
8
+ if (!newKey.trim())
9
+ return;
10
+ let parsedValue = newValue;
11
+ if (newValueType === "number") {
12
+ parsedValue = Number(newValue) || 0;
13
+ }
14
+ else if (newValueType === "boolean") {
15
+ parsedValue = newValue === "true";
16
+ }
17
+ setExtraInfo((prev) => (Object.assign(Object.assign({}, prev), { [newKey.trim()]: parsedValue })));
18
+ setNewKey("");
19
+ setNewValue("");
20
+ };
21
+ const handleRemove = (key) => {
22
+ setExtraInfo((prev) => {
23
+ const updated = Object.assign({}, prev);
24
+ delete updated[key];
25
+ return updated;
26
+ });
27
+ };
28
+ return (_jsxs("div", { className: "mb-6", children: [_jsx("h3", { className: "text-sm font-medium text-gray-700 mb-3", children: "Informations suppl\u00E9mentaires" }), Object.keys(extraInfo).length > 0 && (_jsx("div", { className: "flex flex-wrap gap-2 mb-3", children: Object.entries(extraInfo).map(([key, value]) => (_jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5 bg-blue-50 border border-blue-200 rounded-lg text-sm", children: [_jsxs("span", { className: "font-medium text-blue-700", children: [key, ":"] }), _jsx("span", { className: "text-blue-600", children: String(value) }), _jsx("button", { type: "button", onClick: () => handleRemove(key), className: "ml-1 text-blue-400 hover:text-blue-600", children: _jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }, key))) })), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "text", value: newKey, onChange: (e) => setNewKey(e.target.value), placeholder: "Cl\u00E9", className: "flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" }), _jsxs("select", { value: newValueType, onChange: (e) => setNewValueType(e.target.value), className: "px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500", children: [_jsx("option", { value: "text", children: "Texte" }), _jsx("option", { value: "number", children: "Nombre" }), _jsx("option", { value: "date", children: "Date" }), _jsx("option", { value: "boolean", children: "Oui/Non" })] }), newValueType === "boolean" ? (_jsxs("select", { value: newValue, onChange: (e) => setNewValue(e.target.value), className: "flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500", children: [_jsx("option", { value: "", children: "Choisir..." }), _jsx("option", { value: "true", children: "Oui" }), _jsx("option", { value: "false", children: "Non" })] })) : (_jsx("input", { type: newValueType === "date" ? "date" : newValueType, value: newValue, onChange: (e) => setNewValue(e.target.value), placeholder: "Valeur", className: "flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" })), _jsx("button", { type: "button", onClick: handleAdd, disabled: !newKey.trim() || !newValue, className: "px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-lg hover:bg-blue-700 disabled:bg-gray-300 disabled:cursor-not-allowed transition-colors", children: "OK" })] })] }));
29
+ }
30
+ //# sourceMappingURL=ExtraInfoSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtraInfoSection.js","sourceRoot":"","sources":["../../src/component/ExtraInfoSection.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { Component, RubricDataValues } from "../util/type";
1
+ import { RubricDataValues } from "../util/type";
2
2
  type PdfExportModalProps = {
3
3
  isOpen: boolean;
4
4
  onClose: () => void;
5
- components: Component[];
6
5
  dataValues: RubricDataValues;
7
6
  title?: string;
8
7
  extra?: Record<string, unknown>;
9
8
  };
10
- export declare function PdfExportModal({ isOpen, onClose, components, dataValues, title, extra, }: PdfExportModalProps): import("react/jsx-runtime").JSX.Element | null;
9
+ export declare function PdfExportModal({ isOpen, onClose, dataValues, title, extra, }: PdfExportModalProps): import("react/jsx-runtime").JSX.Element | null;
11
10
  export {};
@@ -1,292 +1,71 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useMemo, useRef, useEffect } from "react";
3
- export function PdfExportModal({ isOpen, onClose, components, dataValues, title, extra, }) {
4
- // Track which attributes are selected for export
2
+ import { useState } from "react";
3
+ import { formatValue, generatePdfHtml, openPdfPrintWindow, } from "../util/pdfExport";
4
+ import { ExtraInfoSection } from "./ExtraInfoSection";
5
+ export function PdfExportModal({ isOpen, onClose, dataValues, title, extra, }) {
6
+ // All attributes selected by default
5
7
  const [selectedAttributes, setSelectedAttributes] = useState(() => {
6
8
  const initial = {};
7
- components.forEach((comp) => {
8
- const compData = dataValues[comp._id];
9
+ for (const [compName, compData] of Object.entries(dataValues)) {
9
10
  if (compData) {
10
- initial[comp._id] = {};
11
- Object.keys(compData).forEach((attrName) => {
12
- initial[comp._id][attrName] = true;
13
- });
11
+ initial[compName] = {};
12
+ for (const attrName of Object.keys(compData)) {
13
+ initial[compName][attrName] = true;
14
+ }
14
15
  }
15
- });
16
+ }
16
17
  return initial;
17
18
  });
18
- const printRef = useRef(null);
19
- // Sync selectedAttributes when dataValues changes (add new attributes as selected)
20
- useEffect(() => {
21
- setSelectedAttributes((prev) => {
22
- const updated = Object.assign({}, prev);
23
- components.forEach((comp) => {
24
- const compData = dataValues[comp._id];
25
- if (compData) {
26
- if (!updated[comp._id]) {
27
- updated[comp._id] = {};
28
- }
29
- Object.keys(compData).forEach((attrName) => {
30
- // Only add if not already tracked (preserve user's selection)
31
- if (updated[comp._id][attrName] === undefined) {
32
- updated[comp._id][attrName] = true;
33
- }
34
- });
35
- }
36
- });
37
- return updated;
38
- });
39
- }, [components, dataValues]);
40
- // Get components that have data
41
- const componentsWithData = useMemo(() => {
42
- return components.filter((comp) => {
43
- const data = dataValues[comp._id];
44
- return data && Object.keys(data).length > 0;
45
- });
46
- }, [components, dataValues]);
47
- // Toggle attribute selection
48
- const toggleAttribute = (componentId, attributeName) => {
19
+ const [pdfTitle, setPdfTitle] = useState(() => title !== null && title !== void 0 ? title : "");
20
+ const [extraInfo, setExtraInfo] = useState(() => extra !== null && extra !== void 0 ? extra : {});
21
+ // Components that have data (keys are now labels)
22
+ const componentNames = Object.entries(dataValues)
23
+ .filter(([, data]) => data && Object.keys(data).length > 0)
24
+ .map(([name]) => name);
25
+ const toggleAttribute = (compName, attrName) => {
49
26
  setSelectedAttributes((prev) => {
50
27
  var _a;
51
- return (Object.assign(Object.assign({}, prev), { [componentId]: Object.assign(Object.assign({}, prev[componentId]), { [attributeName]: !((_a = prev[componentId]) === null || _a === void 0 ? void 0 : _a[attributeName]) }) }));
28
+ return (Object.assign(Object.assign({}, prev), { [compName]: Object.assign(Object.assign({}, prev[compName]), { [attrName]: !((_a = prev[compName]) === null || _a === void 0 ? void 0 : _a[attrName]) }) }));
52
29
  });
53
30
  };
54
- // Toggle all attributes for a component
55
- const toggleAllForComponent = (componentId, selected) => {
56
- const compData = dataValues[componentId];
31
+ const toggleAllForComponent = (compName, selected) => {
32
+ const compData = dataValues[compName];
57
33
  if (!compData)
58
34
  return;
59
- setSelectedAttributes((prev) => (Object.assign(Object.assign({}, prev), { [componentId]: Object.keys(compData).reduce((acc, attrName) => {
35
+ setSelectedAttributes((prev) => (Object.assign(Object.assign({}, prev), { [compName]: Object.keys(compData).reduce((acc, attrName) => {
60
36
  acc[attrName] = selected;
61
37
  return acc;
62
38
  }, {}) })));
63
39
  };
64
- // Get attribute label from component
65
- const getAttributeLabel = (component, attrName) => {
66
- const attr = component.attributes.find((a) => a.name === attrName);
67
- return (attr === null || attr === void 0 ? void 0 : attr.label) || attrName;
68
- };
69
- // Format value for display
70
- const formatValue = (value) => {
71
- if (typeof value === "object") {
72
- if (Array.isArray(value)) {
73
- return value.join(", ");
74
- }
75
- return JSON.stringify(value, null, 2);
76
- }
77
- return String(value);
78
- };
79
- // Check if all attributes are selected for a component
80
- const areAllSelected = (componentId) => {
81
- const compData = dataValues[componentId];
40
+ const areAllSelected = (compName) => {
41
+ const compData = dataValues[compName];
82
42
  if (!compData)
83
43
  return false;
84
- return Object.keys(compData).every((attrName) => { var _a; return (_a = selectedAttributes[componentId]) === null || _a === void 0 ? void 0 : _a[attrName]; });
44
+ return Object.keys(compData).every((attrName) => { var _a; return (_a = selectedAttributes[compName]) === null || _a === void 0 ? void 0 : _a[attrName]; });
85
45
  };
86
- // Generate PDF content and download
87
46
  const handleDownload = () => {
88
- const content = generatePdfContent();
89
- const printWindow = window.open("", "_blank");
90
- if (!printWindow) {
91
- alert("Veuillez autoriser les popups pour télécharger le PDF");
92
- return;
93
- }
94
- printWindow.document.write(`
95
- <!DOCTYPE html>
96
- <html>
97
- <head>
98
- <title>Sauvegarde</title>
99
- <style>
100
- * {
101
- margin: 0;
102
- padding: 0;
103
- box-sizing: border-box;
104
- }
105
- body {
106
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
107
- padding: 40px;
108
- color: #333;
109
- line-height: 1.6;
110
- }
111
- .header {
112
- text-align: center;
113
- margin-bottom: 30px;
114
- padding-bottom: 20px;
115
- border-bottom: 2px solid #2563eb;
116
- }
117
- .header h1 {
118
- color: #1e40af;
119
- font-size: 24px;
120
- margin-bottom: 5px;
121
- }
122
- .header p {
123
- color: #6b7280;
124
- font-size: 12px;
125
- }
126
- .component {
127
- margin-bottom: 30px;
128
- page-break-inside: avoid;
129
- }
130
- .component-title {
131
- background: #2563eb;
132
- color: white;
133
- padding: 10px 15px;
134
- font-size: 16px;
135
- font-weight: 600;
136
- border-radius: 8px 8px 0 0;
137
- }
138
- .component-content {
139
- border: 1px solid #e5e7eb;
140
- border-top: none;
141
- border-radius: 0 0 8px 8px;
142
- padding: 15px;
143
- }
144
- .attribute {
145
- display: flex;
146
- padding: 10px 0;
147
- border-bottom: 1px solid #f3f4f6;
148
- }
149
- .attribute:last-child {
150
- border-bottom: none;
151
- }
152
- .attribute-name {
153
- font-weight: 600;
154
- color: #374151;
155
- width: 200px;
156
- flex-shrink: 0;
157
- }
158
- .attribute-value {
159
- color: #4b5563;
160
- flex: 1;
161
- word-break: break-word;
162
- }
163
- .extra-info {
164
- margin-bottom: 30px;
165
- padding: 15px;
166
- background: #f9fafb;
167
- border-radius: 8px;
168
- border: 1px solid #e5e7eb;
169
- }
170
- .extra-item {
171
- display: inline-block;
172
- margin-right: 20px;
173
- margin-bottom: 5px;
174
- }
175
- .extra-label {
176
- font-weight: 600;
177
- color: #374151;
178
- }
179
- .extra-value {
180
- color: #4b5563;
181
- margin-left: 5px;
182
- }
183
- @media print {
184
- body { padding: 20px; }
185
- .component { page-break-inside: avoid; }
186
- @page {
187
- margin: 20mm;
188
- margin-top: 10mm;
189
- margin-bottom: 10mm;
190
- }
191
- }
192
- /* Hide browser headers/footers */
193
- @page {
194
- size: auto;
195
- margin: 10mm;
196
- }
197
- </style>
198
- </head>
199
- <body>
200
- ${content}
201
- <script>
202
- window.onload = function() {
203
- window.print();
204
- window.onafterprint = function() {
205
- window.close();
206
- };
207
- };
208
- </script>
209
- </body>
210
- </html>
211
- `);
212
- printWindow.document.close();
213
- };
214
- // Generate HTML content for PDF
215
- const generatePdfContent = () => {
216
- const date = new Date().toLocaleDateString("fr-FR", {
217
- year: "numeric",
218
- month: "long",
219
- day: "numeric",
220
- hour: "2-digit",
221
- minute: "2-digit",
222
- });
223
- let html = `
224
- <div class="header">
225
- <h1>${title || "Export de Rubrique"}</h1>
226
- <p>Généré le ${date}</p>
227
- </div>
228
- `;
229
- // Add extra fields if provided
230
- if (extra && Object.keys(extra).length > 0) {
231
- html += `
232
- <div class="extra-info">
233
- `;
234
- Object.entries(extra).forEach(([key, value]) => {
235
- html += `
236
- <div class="extra-item">
237
- <span class="extra-label">${key} :</span>
238
- <span class="extra-value">${String(value)}</span>
239
- </div>
240
- `;
241
- });
242
- html += `
243
- </div>
244
- `;
245
- }
246
- componentsWithData.forEach((component) => {
247
- const compData = dataValues[component._id];
248
- if (!compData)
249
- return;
250
- const selectedAttrs = Object.entries(compData).filter(([attrName]) => { var _a, _b; return (_b = (_a = selectedAttributes[component._id]) === null || _a === void 0 ? void 0 : _a[attrName]) !== null && _b !== void 0 ? _b : true; });
251
- if (selectedAttrs.length === 0)
252
- return;
253
- html += `
254
- <div class="component">
255
- <div class="component-title">${component.label || component.name}</div>
256
- <div class="component-content">
257
- `;
258
- selectedAttrs.forEach(([attrName, value]) => {
259
- const label = getAttributeLabel(component, attrName);
260
- const formattedValue = formatValue(value);
261
- html += `
262
- <div class="attribute">
263
- <div class="attribute-name">${label}</div>
264
- <div class="attribute-value">${formattedValue}</div>
265
- </div>
266
- `;
267
- });
268
- html += `
269
- </div>
270
- </div>
271
- `;
47
+ const html = generatePdfHtml({
48
+ title: pdfTitle,
49
+ extraInfo,
50
+ dataValues,
51
+ selectedAttributes,
272
52
  });
273
- return html;
53
+ openPdfPrintWindow(html);
274
54
  };
275
55
  if (!isOpen)
276
56
  return null;
277
- return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/50", onClick: onClose }), _jsxs("div", { className: "relative bg-white rounded-xl shadow-2xl w-full max-w-3xl max-h-[90vh] flex flex-col mx-4", children: [_jsxs("div", { className: "flex items-center justify-between px-6 py-4 border-b border-gray-200", children: [_jsx("h2", { className: "text-xl font-semibold text-gray-800", children: "Exporter en PDF" }), _jsx("div", { className: "flex items-center gap-3", children: _jsx("button", { type: "button", onClick: onClose, className: "p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors", children: _jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }) })] }), _jsxs("div", { className: "flex-1 overflow-y-auto p-6", children: [_jsx("p", { className: "text-sm text-gray-600 mb-4", children: "S\u00E9lectionnez les attributs \u00E0 inclure dans le PDF :" }), componentsWithData.length === 0 ? (_jsx("div", { className: "text-center py-8 text-gray-500", children: "Aucune donn\u00E9e \u00E0 exporter" })) : (_jsx("div", { className: "space-y-6", ref: printRef, children: componentsWithData.map((component) => {
278
- const compData = dataValues[component._id];
57
+ return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/50", onClick: onClose }), _jsxs("div", { className: "relative bg-white rounded-xl shadow-2xl w-full max-w-3xl max-h-[90vh] flex flex-col mx-4", children: [_jsxs("div", { className: "flex items-center justify-between px-6 py-4 border-b border-gray-200", children: [_jsx("h2", { className: "text-xl font-semibold text-gray-800", children: "Exporter en PDF" }), _jsx("button", { type: "button", onClick: onClose, className: "p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors", children: _jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }), _jsxs("div", { className: "flex-1 overflow-y-auto p-6", children: [_jsxs("div", { className: "mb-6", children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: "Titre du document" }), _jsx("input", { type: "text", value: pdfTitle, onChange: (e) => setPdfTitle(e.target.value), placeholder: "Export de Rubrique", className: "w-full px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" })] }), _jsx(ExtraInfoSection, { extraInfo: extraInfo, setExtraInfo: setExtraInfo }), _jsx("hr", { className: "mb-4 border-gray-200" }), _jsx("p", { className: "text-sm text-gray-600 mb-4", children: "S\u00E9lectionnez les attributs \u00E0 inclure dans le PDF :" }), componentNames.length === 0 ? (_jsx("div", { className: "text-center py-8 text-gray-500", children: "Aucune donn\u00E9e \u00E0 exporter" })) : (_jsx("div", { className: "space-y-6", children: componentNames.map((compName) => {
58
+ const compData = dataValues[compName];
279
59
  if (!compData)
280
60
  return null;
281
- const allSelected = areAllSelected(component._id);
282
- return (_jsxs("div", { className: "border border-gray-200 rounded-lg overflow-hidden", children: [_jsxs("div", { className: "bg-gray-50 px-4 py-3 flex items-center justify-between border-b border-gray-200", children: [_jsx("h3", { className: "font-semibold text-gray-800", children: component.label || component.name }), _jsx("button", { type: "button", onClick: () => toggleAllForComponent(component._id, !allSelected), className: "text-sm text-blue-600 hover:text-blue-700 font-medium", children: allSelected
61
+ const allSelected = areAllSelected(compName);
62
+ return (_jsxs("div", { className: "border border-gray-200 rounded-lg overflow-hidden", children: [_jsxs("div", { className: "bg-gray-50 px-4 py-3 flex items-center justify-between border-b border-gray-200", children: [_jsx("h3", { className: "font-semibold text-gray-800", children: compName }), _jsx("button", { type: "button", onClick: () => toggleAllForComponent(compName, !allSelected), className: "text-sm text-blue-600 hover:text-blue-700 font-medium", children: allSelected
283
63
  ? "Tout désélectionner"
284
64
  : "Tout sélectionner" })] }), _jsx("div", { className: "divide-y divide-gray-100", children: Object.entries(compData).map(([attrName, value]) => {
285
65
  var _a, _b;
286
- const isSelected = (_b = (_a = selectedAttributes[component._id]) === null || _a === void 0 ? void 0 : _a[attrName]) !== null && _b !== void 0 ? _b : true;
287
- const label = getAttributeLabel(component, attrName);
288
- return (_jsxs("label", { className: `flex items-start gap-3 px-4 py-3 cursor-pointer hover:bg-gray-50 transition-colors ${!isSelected ? "opacity-50" : ""}`, children: [_jsx("input", { type: "checkbox", checked: isSelected, onChange: () => toggleAttribute(component._id, attrName), className: "mt-1 w-4 h-4 text-blue-600 rounded border-gray-300 focus:ring-blue-500" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("div", { className: "font-medium text-gray-700", children: label }), _jsx("div", { className: "text-sm text-gray-500 truncate", children: formatValue(value) })] })] }, attrName));
289
- }) })] }, component._id));
66
+ const isSelected = (_b = (_a = selectedAttributes[compName]) === null || _a === void 0 ? void 0 : _a[attrName]) !== null && _b !== void 0 ? _b : true;
67
+ return (_jsxs("label", { className: `flex items-start gap-3 px-4 py-3 cursor-pointer hover:bg-gray-50 transition-colors ${!isSelected ? "opacity-50" : ""}`, children: [_jsx("input", { type: "checkbox", checked: isSelected, onChange: () => toggleAttribute(compName, attrName), className: "mt-1 w-4 h-4 text-blue-600 rounded border-gray-300 focus:ring-blue-500" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("div", { className: "font-medium text-gray-700", children: attrName }), _jsx("div", { className: "text-sm text-gray-500 truncate", children: formatValue(value) })] })] }, attrName));
68
+ }) })] }, compName));
290
69
  }) }))] }), _jsxs("div", { className: "px-6 py-4 border-t border-gray-200 bg-gray-50 flex justify-end gap-3", children: [_jsx("button", { type: "button", onClick: onClose, className: "px-4 py-2 text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors font-medium", children: "Annuler" }), _jsxs("button", { type: "button", onClick: handleDownload, className: "flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors font-medium", children: [_jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }), "T\u00E9l\u00E9charger le PDF"] })] })] })] }));
291
70
  }
292
71
  //# sourceMappingURL=PdfExportModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PdfExportModal.js","sourceRoot":"","sources":["../../src/component/PdfExportModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PdfExportModal.js","sourceRoot":"","sources":["../../src/component/PdfExportModal.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- import { Component, Data, Permission, RubricDataValues } from "../util/type";
1
+ import { Component, Data, PermissionType, RubricDataValues, User } from "../util/type";
2
2
  type RubricDisplayerProps = {
3
3
  components: Component[];
4
4
  datas?: (Data | null)[];
5
- dataValues: RubricDataValues;
6
- setDataValues: (values: RubricDataValues) => void;
7
5
  onSubmit?: (modifiedValues: RubricDataValues) => void;
8
- permission?: Permission | null;
6
+ permissions?: PermissionType[];
7
+ users?: User[];
9
8
  pdfTitle?: string;
10
9
  pdfExtra?: Record<string, unknown>;
11
10
  };
12
- export declare function RubricDisplayer({ components, datas, dataValues, setDataValues, onSubmit, permission, pdfTitle, pdfExtra, }: RubricDisplayerProps): import("react/jsx-runtime").JSX.Element | null;
11
+ export declare function RubricDisplayer({ components, datas, onSubmit, permissions, users, pdfTitle, pdfExtra, }: RubricDisplayerProps): import("react/jsx-runtime").JSX.Element | null;
13
12
  export {};
@@ -2,46 +2,35 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useMemo, useEffect } from "react";
3
3
  import { ComponentDisplayer } from "./ComponentDisplayer";
4
4
  import { PdfExportModal } from "./PdfExportModal";
5
- import { getComponentPermission, groupDataByComponentIndex, extractLatestDataValues, formatDate, } from "../util/rubricDisplayer";
6
- export function RubricDisplayer({ components, datas = [], dataValues, setDataValues, onSubmit, permission = null, pdfTitle, pdfExtra, }) {
5
+ import { groupDataByComponentIndex, extractLatestDataValues, formatDate, getComponentPermission, } from "../util/rubricDisplayer";
6
+ export function RubricDisplayer({ components, datas = [], onSubmit, permissions, users, pdfTitle, pdfExtra, }) {
7
7
  var _a, _b;
8
8
  const [selectedComponentIndex, setSelectedComponentIndex] = useState(0);
9
9
  const [selectedHistoryIndex, setSelectedHistoryIndex] = useState({});
10
- const [isInitialized, setIsInitialized] = useState(false);
11
10
  const [isPdfModalOpen, setIsPdfModalOpen] = useState(false);
12
- // Store the original values for diff comparison
13
- const [originalValues, setOriginalValues] = useState({});
11
+ const [pdfDataValues, setPdfDataValues] = useState({});
12
+ // Internal state for form values
13
+ const [dataValues, setDataValues] = useState(() => extractLatestDataValues(components, datas));
14
+ // Store original values for diff comparison
15
+ const [originalValues, setOriginalValues] = useState(() => structuredClone(extractLatestDataValues(components, datas)));
16
+ // Re-initialize when datas changes (e.g. navigating between rubrics)
17
+ useEffect(() => {
18
+ if (datas.length === 0)
19
+ return;
20
+ const initialValues = extractLatestDataValues(components, datas);
21
+ setDataValues(initialValues);
22
+ setOriginalValues(structuredClone(initialValues));
23
+ }, [datas, components]);
14
24
  // Group existing data by component (using index-based mapping)
15
25
  // Note: datas may contain null values - index position matters for component mapping
16
26
  const componentDataMap = useMemo(() => groupDataByComponentIndex(components, datas), [components, datas]);
17
- // Initialize dataValues from datas on first render (if datas exist and dataValues is empty)
18
- useEffect(() => {
19
- const hasValidData = datas.some((d) => d !== null);
20
- if (!isInitialized && hasValidData && components.length > 0) {
21
- const hasExistingData = Object.keys(dataValues).length > 0;
22
- if (!hasExistingData) {
23
- // Extract latest values from datas and initialize dataValues
24
- const initialValues = extractLatestDataValues(components, datas);
25
- if (Object.keys(initialValues).length > 0) {
26
- setDataValues(initialValues);
27
- // Store DEEP COPY of original values for later comparison
28
- setOriginalValues(JSON.parse(JSON.stringify(initialValues)));
29
- }
30
- }
31
- else {
32
- // If dataValues already has data, use DEEP COPY as original
33
- setOriginalValues(JSON.parse(JSON.stringify(dataValues)));
34
- }
35
- setIsInitialized(true);
36
- }
37
- }, [datas, components, dataValues, setDataValues, isInitialized]);
38
27
  // Get current component
39
28
  const currentComponent = components[selectedComponentIndex];
40
29
  if (!currentComponent)
41
30
  return null;
42
31
  const currentComponentId = currentComponent._id;
43
32
  // Get permission for current component
44
- const componentPermission = getComponentPermission(permission, currentComponent.name);
33
+ const componentPermission = getComponentPermission(permissions, currentComponent.name);
45
34
  const isDisabled = componentPermission === "read";
46
35
  // Get history for current component
47
36
  const componentHistory = ((_a = componentDataMap.get(currentComponentId)) === null || _a === void 0 ? void 0 : _a.history) || [];
@@ -101,9 +90,32 @@ export function RubricDisplayer({ components, datas = [], dataValues, setDataVal
101
90
  onSubmit(modifiedValues);
102
91
  }
103
92
  };
104
- return (_jsxs("div", { className: "w-full", children: [_jsx("div", { className: "flex justify-end mb-4", children: _jsxs("button", { type: "button", onClick: () => setIsPdfModalOpen(true), className: "flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors font-medium text-sm", children: [_jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }), "Exporter PDF"] }) }), _jsx("div", { className: "flex flex-wrap gap-2 mb-6 border-b border-gray-200 pb-4", children: components.map((component, index) => {
93
+ // Transform dataValues into display-ready format for PDF
94
+ // Component IDs → component labels, attribute names → attribute labels
95
+ const openPdfModal = () => {
96
+ const transformed = {};
97
+ for (const comp of components) {
98
+ const compData = dataValues[comp._id];
99
+ if (!compData || Object.keys(compData).length === 0)
100
+ continue;
101
+ const labeledData = {};
102
+ for (const [attrName, value] of Object.entries(compData)) {
103
+ const attr = comp.attributes.find((a) => a.name === attrName);
104
+ const label = (attr === null || attr === void 0 ? void 0 : attr.label) || attrName;
105
+ labeledData[label] = value;
106
+ }
107
+ transformed[comp.label || comp.name] = labeledData;
108
+ }
109
+ setPdfDataValues(transformed);
110
+ setIsPdfModalOpen(true);
111
+ };
112
+ const userCredentials = (userId) => {
113
+ const user = users === null || users === void 0 ? void 0 : users.find((u) => u.id === userId);
114
+ return user ? `${user.firstName} ${user.lastName}` : "";
115
+ };
116
+ return (_jsxs("div", { className: "w-full", children: [_jsx("div", { className: "flex justify-end mb-4", children: _jsxs("button", { type: "button", onClick: openPdfModal, className: "flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors font-medium text-sm", children: [_jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }), "Exporter PDF"] }) }), _jsx("div", { className: "flex flex-wrap gap-2 mb-6 border-b border-gray-200 pb-4", children: components.map((component, index) => {
105
117
  var _a;
106
- const compPermission = getComponentPermission(permission, component.name);
118
+ const compPermission = getComponentPermission(permissions, component.name);
107
119
  const hasData = (((_a = componentDataMap.get(component._id)) === null || _a === void 0 ? void 0 : _a.history.length) || 0) > 0;
108
120
  return (_jsxs("button", { type: "button", onClick: () => setSelectedComponentIndex(index), className: `
109
121
  px-4 py-2 rounded-lg font-medium text-sm transition-all
@@ -135,17 +147,17 @@ export function RubricDisplayer({ components, datas = [], dataValues, setDataVal
135
147
  : "bg-gray-300 text-gray-700"}
136
148
  `, children: componentHistory.length - index }), _jsxs("div", { className: "ml-2", children: [_jsx("div", { className: "font-medium", children: index === 0
137
149
  ? "Dernière version"
138
- : `Version ${componentHistory.length - index}` }), _jsx("div", { className: "text-xs text-gray-500", children: formatDate(data.createdAt) })] })] }, data._id || index))) })] })), componentHistory.length === 1 && (_jsxs("div", { className: "mb-4 text-sm text-gray-500 flex items-center gap-2", children: [_jsx("span", { className: "w-2 h-2 bg-blue-500 rounded-full" }), "Derni\u00E8re mise \u00E0 jour : ", formatDate(componentHistory[0].createdAt)] })), componentPermission === "read" && (_jsx("div", { className: "mb-4 px-4 py-2 bg-yellow-50 border border-yellow-200 rounded-lg text-yellow-700 text-sm", children: "Ce composant est en lecture seule. Vous pouvez consulter les donn\u00E9es mais pas les modifier." })), _jsx("div", { className: "bg-white rounded-xl border border-gray-200 p-6", children: _jsx(ComponentDisplayer, { component: currentComponent, data: getCurrentDataValue(), setData: handleSetData, onSubmit: handleSubmit, disabled: isDisabled }) }), _jsx("div", { className: "mt-4 flex items-center justify-center gap-2", children: components.map((comp, index) => {
139
- const compData = dataValues[comp._id];
140
- const hasData = compData && Object.keys(compData).length > 0;
141
- return (_jsx("button", { type: "button", onClick: () => setSelectedComponentIndex(index), className: `
142
- w-3 h-3 rounded-full transition-all
143
- ${selectedComponentIndex === index
144
- ? "bg-blue-600 scale-125"
145
- : hasData
146
- ? "bg-blue-300"
147
- : "bg-gray-300"}
148
- `, title: comp.label || comp.name }, comp._id));
149
- }) }), _jsx(PdfExportModal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), components: components, dataValues: dataValues, title: pdfTitle, extra: pdfExtra })] }));
150
+ : `Version ${componentHistory.length - index}` }), _jsx("div", { className: "text-xs text-gray-500 mt-0.5", children: formatDate(data.createdAt) }), _jsx("div", { className: "text-xs font-medium text-blue-600 mt-0.5", children: userCredentials(data.creator) })] })] }, data._id || index))) })] })), componentHistory.length === 1 && (_jsxs("div", { className: "mb-4 text-sm text-gray-500 flex items-center gap-2", children: [_jsx("span", { className: "w-2 h-2 bg-blue-500 rounded-full" }), "Derni\u00E8re mise \u00E0 jour : ", formatDate(componentHistory[0].createdAt), _jsx("span", { className: "font-medium text-blue-600", children: userCredentials(componentHistory[0].creator) })] })), componentPermission === "read" && (_jsx("div", { className: "mb-4 px-4 py-2 bg-yellow-50 border border-yellow-200 rounded-lg text-yellow-700 text-sm", children: "Ce composant est en lecture seule. Vous pouvez consulter les donn\u00E9es mais pas les modifier." })), _jsx("div", { className: "bg-white rounded-xl border border-gray-200 p-6", children: _jsx(ComponentDisplayer, { component: currentComponent, data: getCurrentDataValue(), setData: handleSetData, disabled: isDisabled }) }), _jsxs("div", { className: "mt-6 flex items-center justify-between gap-4", children: [_jsx("button", { type: "button", onClick: () => setSelectedComponentIndex((i) => Math.max(0, i - 1)), disabled: selectedComponentIndex === 0, className: "px-4 py-2 rounded-lg text-sm font-medium bg-gray-100 text-gray-700 hover:bg-gray-200 disabled:opacity-40 disabled:cursor-not-allowed transition-colors", children: "\u2190 Pr\u00E9c\u00E9dent" }), _jsx("div", { className: "flex items-center gap-2", children: components.map((comp, index) => {
151
+ const compData = dataValues[comp._id];
152
+ const hasData = compData && Object.keys(compData).length > 0;
153
+ return (_jsx("button", { type: "button", onClick: () => setSelectedComponentIndex(index), className: `
154
+ w-3 h-3 rounded-full transition-all
155
+ ${selectedComponentIndex === index
156
+ ? "bg-blue-600 scale-125"
157
+ : hasData
158
+ ? "bg-blue-300"
159
+ : "bg-gray-300"}
160
+ `, title: comp.label || comp.name }, comp._id));
161
+ }) }), _jsx("button", { type: "button", onClick: () => setSelectedComponentIndex((i) => Math.min(components.length - 1, i + 1)), disabled: selectedComponentIndex === components.length - 1, className: "px-4 py-2 rounded-lg text-sm font-medium bg-gray-100 text-gray-700 hover:bg-gray-200 disabled:opacity-40 disabled:cursor-not-allowed transition-colors", children: "Suivant \u2192" })] }), onSubmit && (_jsx("div", { className: "mt-6 flex justify-center", children: _jsx("button", { type: "button", onClick: handleSubmit, className: "px-8 py-3 bg-blue-600 text-white font-semibold rounded-xl hover:bg-blue-700 active:scale-95 transition-all shadow-md text-sm", children: "Soumettre" }) })), _jsx(PdfExportModal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), dataValues: pdfDataValues, title: pdfTitle, extra: pdfExtra })] }));
150
162
  }
151
163
  //# sourceMappingURL=RubricDisplayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RubricDisplayer.js","sourceRoot":"","sources":["../../src/component/RubricDisplayer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RubricDisplayer.js","sourceRoot":"","sources":["../../src/component/RubricDisplayer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,UAAU,EACV,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAYjC,MAAM,UAAU,eAAe,CAAC,EAC9B,UAAU,EACV,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,GACa;;IACrB,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAE9D,EAAE,CAAC,CAAC;IACN,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IAEzE,iCAAiC;IACjC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAmB,GAAG,EAAE,CAClE,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,CAC3C,CAAC;IAEF,4CAA4C;IAC5C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAmB,GAAG,EAAE,CAC1E,eAAe,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAC5D,CAAC;IAEF,qEAAqE;IACrE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,aAAa,GAAG,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACjE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC7B,iBAAiB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAExB,+DAA+D;IAC/D,qFAAqF;IACrF,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC,EAClD,CAAC,UAAU,EAAE,KAAK,CAAC,CACpB,CAAC;IAEF,wBAAwB;IACxB,MAAM,gBAAgB,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC5D,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,CAAC;IAEhD,uCAAuC;IACvC,MAAM,mBAAmB,GAAG,sBAAsB,CAChD,WAAW,EACX,gBAAgB,CAAC,IAAI,CACtB,CAAC;IACF,MAAM,UAAU,GAAG,mBAAmB,KAAK,MAAM,CAAC;IAElD,oCAAoC;IACpC,MAAM,gBAAgB,GACpB,CAAA,MAAA,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,0CAAE,OAAO,KAAI,EAAE,CAAC;IAC1D,MAAM,mBAAmB,GAAG,MAAA,oBAAoB,CAAC,kBAAkB,CAAC,mCAAI,CAAC,CAAC;IAE1E,+EAA+E;IAC/E,MAAM,mBAAmB,GAAG,GAAa,EAAE;QACzC,iDAAiD;QACjD,IAAI,mBAAmB,GAAG,CAAC,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACrE,OAAO,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,CAAC;QACD,kFAAkF;QAClF,OAAO,UAAU,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,gEAAgE;IAChE,MAAM,aAAa,GAAG,CAAC,OAAiB,EAAE,EAAE;QAC1C,aAAa,iCACR,UAAU,KACb,CAAC,kBAAkB,CAAC,EAAE,OAAO,IAC7B,CAAC;IACL,CAAC,CAAC;IAEF,2BAA2B;IAC3B,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAE,EAAE;QACnD,uBAAuB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCAC7B,IAAI,KACP,CAAC,kBAAkB,CAAC,EAAE,YAAY,IAClC,CAAC,CAAC;QAEJ,4EAA4E;QAC5E,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,MAAM,cAAc,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClE,aAAa,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAEF,sCAAsC;IACtC,MAAM,iBAAiB,GAAG,GAAqB,EAAE;QAC/C,6DAA6D;QAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,kDAAkD;QAClD,MAAM,cAAc,GAAqB,EAAE,CAAC;QAE5C,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;YAEjD,+CAA+C;YAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvD,cAAc,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;gBAC5C,CAAC;gBACD,SAAS;YACX,CAAC;YAED,qDAAqD;YACrD,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjE,cAAc,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;IAEF,4CAA4C;IAC5C,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAC3C,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,yDAAyD;IACzD,uEAAuE;IACvE,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,MAAM,WAAW,GAAqB,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE9D,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAC9D,MAAM,KAAK,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KAAI,QAAQ,CAAC;gBACtC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YAC7B,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;QACrD,CAAC;QACD,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9B,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE;QACjD,MAAM,IAAI,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,QAAQ,aAErB,cAAK,SAAS,EAAC,uBAAuB,YACpC,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,gIAAgI,aAE1I,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,YAEnB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,iIAAiI,GACnI,GACE,oBAEC,GACL,EAGN,cAAK,SAAS,EAAC,yDAAyD,YACrE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;;oBACnC,MAAM,cAAc,GAAG,sBAAsB,CAC3C,WAAW,EACX,SAAS,CAAC,IAAI,CACf,CAAC;oBACF,MAAM,OAAO,GACX,CAAC,CAAA,MAAA,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,0CAAE,OAAO,CAAC,MAAM,KAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAEjE,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAE;;;kBAIP,sBAAsB,KAAK,KAAK;4BAC9B,CAAC,CAAC,kCAAkC;4BACpC,CAAC,CAAC,6CACN;eACD,aAED,yBAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,GAAQ,EAE/C,cAAc,IAAI,CACjB,eACE,SAAS,EAAE;;sBAGP,cAAc,KAAK,OAAO;oCACxB,CAAC,CAAC,6BAA6B;oCAC/B,CAAC,CAAC,+BACN;sBACE,sBAAsB,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;mBAC1D,YAEA,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GACpC,CACR,EAEA,OAAO,IAAI,CACV,eACE,SAAS,EAAE;;sBAEP,sBAAsB,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa;mBAChE,GACD,CACH,KAtCI,SAAS,CAAC,GAAG,IAAI,KAAK,CAuCpB,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,EAGL,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,eAAK,SAAS,EAAC,MAAM,aACnB,eAAK,SAAS,EAAC,wCAAwC,6BACxC,gBAAgB,CAAC,MAAM,sBAChC,EACN,cAAK,SAAS,EAAC,sBAAsB,YAClC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACrC,kBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACzC,SAAS,EAAE;;;oBAIP,mBAAmB,KAAK,KAAK;gCAC3B,CAAC,CAAC,0CAA0C;gCAC5C,CAAC,CAAC,8DACN;iBACD,aAGD,eACE,SAAS,EAAE;;;sBAIP,mBAAmB,KAAK,KAAK;wCAC3B,CAAC,CAAC,wBAAwB;wCAC1B,CAAC,CAAC,2BACN;mBACD,YAEA,gBAAgB,CAAC,MAAM,GAAG,KAAK,GAC3B,EACP,eAAK,SAAS,EAAC,MAAM,aACnB,cAAK,SAAS,EAAC,aAAa,YACzB,KAAK,KAAK,CAAC;gDACV,CAAC,CAAC,kBAAkB;gDACpB,CAAC,CAAC,WAAW,gBAAgB,CAAC,MAAM,GAAG,KAAK,EAAE,GAC5C,EACN,cAAK,SAAS,EAAC,8BAA8B,YAC1C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GACvB,EAEN,cAAK,SAAS,EAAC,0CAA0C,YACtD,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAC1B,IACF,KAxCD,IAAI,CAAC,GAAG,IAAI,KAAK,CAyCf,CACV,CAAC,GACE,IACF,CACP,EAGA,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,CAChC,eAAK,SAAS,EAAC,oDAAoD,aACjE,eAAM,SAAS,EAAC,kCAAkC,GAAG,uCAC7B,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACjE,eAAM,SAAS,EAAC,2BAA2B,YACxC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GACxC,IACH,CACP,EAGA,mBAAmB,KAAK,MAAM,IAAI,CACjC,cAAK,SAAS,EAAC,yFAAyF,iHAGlG,CACP,EAGD,cAAK,SAAS,EAAC,gDAAgD,YAC7D,KAAC,kBAAkB,IACjB,SAAS,EAAE,gBAAgB,EAC3B,IAAI,EAAE,mBAAmB,EAAE,EAC3B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,UAAU,GACpB,GACE,EAGN,eAAK,SAAS,EAAC,8CAA8C,aAC3D,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EACnE,QAAQ,EAAE,sBAAsB,KAAK,CAAC,EACtC,SAAS,EAAC,wJAAwJ,2CAG3J,EAET,cAAK,SAAS,EAAC,yBAAyB,YACrC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;4BAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACtC,MAAM,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;4BAE7D,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAE;;oBAGP,sBAAsB,KAAK,KAAK;oCAC9B,CAAC,CAAC,uBAAuB;oCACzB,CAAC,CAAC,OAAO;wCACP,CAAC,CAAC,aAAa;wCACf,CAAC,CAAC,aACR;iBACD,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAbzB,IAAI,CAAC,GAAG,CAcb,CACH,CAAC;wBACJ,CAAC,CAAC,GACE,EAEN,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CACZ,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CACvC,EAEH,QAAQ,EAAE,sBAAsB,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAC1D,SAAS,EAAC,wJAAwJ,+BAG3J,IACL,EAGL,QAAQ,IAAI,CACX,cAAK,SAAS,EAAC,0BAA0B,YACvC,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,8HAA8H,0BAGjI,GACL,CACP,EAGD,KAAC,cAAc,IACb,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACvC,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,GACf,IACE,CACP,CAAC;AACJ,CAAC"}
package/dist/index.css CHANGED
@@ -642,6 +642,10 @@ video {
642
642
  margin-bottom: 0.5rem;
643
643
  }
644
644
 
645
+ .mb-3 {
646
+ margin-bottom: 0.75rem;
647
+ }
648
+
645
649
  .mb-4 {
646
650
  margin-bottom: 1rem;
647
651
  }
@@ -654,6 +658,10 @@ video {
654
658
  margin-bottom: 2rem;
655
659
  }
656
660
 
661
+ .ml-1 {
662
+ margin-left: 0.25rem;
663
+ }
664
+
657
665
  .ml-2 {
658
666
  margin-left: 0.5rem;
659
667
  }
@@ -670,6 +678,14 @@ video {
670
678
  margin-right: 0.5rem;
671
679
  }
672
680
 
681
+ .mt-0 {
682
+ margin-top: 0px;
683
+ }
684
+
685
+ .mt-0\.5 {
686
+ margin-top: 0.125rem;
687
+ }
688
+
673
689
  .mt-1 {
674
690
  margin-top: 0.25rem;
675
691
  }
@@ -682,6 +698,10 @@ video {
682
698
  margin-top: 1rem;
683
699
  }
684
700
 
701
+ .mt-6 {
702
+ margin-top: 1.5rem;
703
+ }
704
+
685
705
  .block {
686
706
  display: block;
687
707
  }
@@ -837,6 +857,10 @@ video {
837
857
  gap: 0.75rem;
838
858
  }
839
859
 
860
+ .gap-4 {
861
+ gap: 1rem;
862
+ }
863
+
840
864
  .space-y-6 > :not([hidden]) ~ :not([hidden]) {
841
865
  --tw-space-y-reverse: 0;
842
866
  margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
@@ -912,6 +936,11 @@ video {
912
936
  border-top-width: 1px;
913
937
  }
914
938
 
939
+ .border-blue-200 {
940
+ --tw-border-opacity: 1;
941
+ border-color: rgb(191 219 254 / var(--tw-border-opacity));
942
+ }
943
+
915
944
  .border-blue-500 {
916
945
  --tw-border-opacity: 1;
917
946
  border-color: rgb(59 130 246 / var(--tw-border-opacity));
@@ -1184,6 +1213,11 @@ video {
1184
1213
  color: rgb(0 0 0 / var(--tw-text-opacity));
1185
1214
  }
1186
1215
 
1216
+ .text-blue-400 {
1217
+ --tw-text-opacity: 1;
1218
+ color: rgb(96 165 250 / var(--tw-text-opacity));
1219
+ }
1220
+
1187
1221
  .text-blue-500 {
1188
1222
  --tw-text-opacity: 1;
1189
1223
  color: rgb(59 130 246 / var(--tw-text-opacity));
@@ -1329,6 +1363,11 @@ video {
1329
1363
  --tw-bg-opacity: 1;
1330
1364
  }
1331
1365
 
1366
+ .hover\:text-blue-600:hover {
1367
+ --tw-text-opacity: 1;
1368
+ color: rgb(37 99 235 / var(--tw-text-opacity));
1369
+ }
1370
+
1332
1371
  .hover\:text-blue-700:hover {
1333
1372
  --tw-text-opacity: 1;
1334
1373
  color: rgb(29 78 216 / var(--tw-text-opacity));
@@ -1353,20 +1392,45 @@ video {
1353
1392
  outline-offset: 2px;
1354
1393
  }
1355
1394
 
1395
+ .focus\:ring-2:focus {
1396
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1397
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1398
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
1399
+ }
1400
+
1356
1401
  .focus\:ring-blue-500:focus {
1357
1402
  --tw-ring-opacity: 1;
1358
1403
  --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
1359
1404
  }
1360
1405
 
1406
+ .active\:scale-95:active {
1407
+ --tw-scale-x: .95;
1408
+ --tw-scale-y: .95;
1409
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1410
+ }
1411
+
1361
1412
  .disabled\:pointer-events-none:disabled {
1362
1413
  pointer-events: none;
1363
1414
  }
1364
1415
 
1416
+ .disabled\:cursor-not-allowed:disabled {
1417
+ cursor: not-allowed;
1418
+ }
1419
+
1420
+ .disabled\:bg-gray-300:disabled {
1421
+ --tw-bg-opacity: 1;
1422
+ background-color: rgb(209 213 219 / var(--tw-bg-opacity));
1423
+ }
1424
+
1365
1425
  .disabled\:bg-gray-400:disabled {
1366
1426
  --tw-bg-opacity: 1;
1367
1427
  background-color: rgb(156 163 175 / var(--tw-bg-opacity));
1368
1428
  }
1369
1429
 
1430
+ .disabled\:opacity-40:disabled {
1431
+ opacity: 0.4;
1432
+ }
1433
+
1370
1434
  .disabled\:opacity-50:disabled {
1371
1435
  opacity: 0.5;
1372
1436
  }
@@ -0,0 +1,21 @@
1
+ import { RubricDataValues } from "./type";
2
+ /**
3
+ * Format a value (string or object) for display
4
+ */
5
+ export declare function formatValue(value: string | object): string;
6
+ type GeneratePdfHtmlParams = {
7
+ title: string;
8
+ extraInfo: Record<string, unknown>;
9
+ dataValues: RubricDataValues;
10
+ selectedAttributes: Record<string, Record<string, boolean>>;
11
+ };
12
+ /**
13
+ * Build the full HTML content for the PDF document.
14
+ * dataValues keys are component labels, attribute keys are attribute labels.
15
+ */
16
+ export declare function generatePdfHtml({ title, extraInfo, dataValues, selectedAttributes, }: GeneratePdfHtmlParams): string;
17
+ /**
18
+ * Open a print window with the generated HTML and trigger browser print dialog
19
+ */
20
+ export declare function openPdfPrintWindow(htmlContent: string): void;
21
+ export {};
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Format a value (string or object) for display
3
+ */
4
+ export function formatValue(value) {
5
+ if (typeof value === "object") {
6
+ if (Array.isArray(value)) {
7
+ return value.join(", ");
8
+ }
9
+ return JSON.stringify(value, null, 2);
10
+ }
11
+ return String(value);
12
+ }
13
+ /**
14
+ * Build the full HTML content for the PDF document.
15
+ * dataValues keys are component labels, attribute keys are attribute labels.
16
+ */
17
+ export function generatePdfHtml({ title, extraInfo, dataValues, selectedAttributes, }) {
18
+ const date = new Date().toLocaleDateString("fr-FR", {
19
+ year: "numeric",
20
+ month: "long",
21
+ day: "numeric",
22
+ hour: "2-digit",
23
+ minute: "2-digit",
24
+ });
25
+ let html = `
26
+ <div class="header">
27
+ <h1>${title || "Export de Rubrique"}</h1>
28
+ <p>Généré le ${date}</p>
29
+ </div>
30
+ `;
31
+ // Extra fields
32
+ if (Object.keys(extraInfo).length > 0) {
33
+ html += `<div class="extra-info">`;
34
+ Object.entries(extraInfo).forEach(([key, value]) => {
35
+ html += `
36
+ <div class="extra-item">
37
+ <span class="extra-label">${key} :</span>
38
+ <span class="extra-value">${String(value)}</span>
39
+ </div>
40
+ `;
41
+ });
42
+ html += `</div>`;
43
+ }
44
+ // Iterate over components (keys are labels)
45
+ Object.entries(dataValues).forEach(([compName, compData]) => {
46
+ if (!compData || Object.keys(compData).length === 0)
47
+ return;
48
+ const selectedAttrs = Object.entries(compData).filter(([attrName]) => { var _a, _b; return (_b = (_a = selectedAttributes[compName]) === null || _a === void 0 ? void 0 : _a[attrName]) !== null && _b !== void 0 ? _b : true; });
49
+ if (selectedAttrs.length === 0)
50
+ return;
51
+ html += `
52
+ <div class="component">
53
+ <div class="component-title">${compName}</div>
54
+ <div class="component-content">
55
+ `;
56
+ selectedAttrs.forEach(([attrName, value]) => {
57
+ html += `
58
+ <div class="attribute">
59
+ <div class="attribute-name">${attrName}</div>
60
+ <div class="attribute-value">${formatValue(value)}</div>
61
+ </div>
62
+ `;
63
+ });
64
+ html += `
65
+ </div>
66
+ </div>
67
+ `;
68
+ });
69
+ return html;
70
+ }
71
+ const PDF_STYLES = `
72
+ * { margin: 0; padding: 0; box-sizing: border-box; }
73
+ body {
74
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
75
+ padding: 40px;
76
+ color: #333;
77
+ line-height: 1.6;
78
+ }
79
+ .header {
80
+ text-align: center;
81
+ margin-bottom: 30px;
82
+ padding-bottom: 20px;
83
+ border-bottom: 2px solid #2563eb;
84
+ }
85
+ .header h1 { color: #1e40af; font-size: 24px; margin-bottom: 5px; }
86
+ .header p { color: #6b7280; font-size: 12px; }
87
+ .component { margin-bottom: 30px; page-break-inside: avoid; }
88
+ .component-title {
89
+ background: #2563eb;
90
+ color: white;
91
+ padding: 10px 15px;
92
+ font-size: 16px;
93
+ font-weight: 600;
94
+ border-radius: 8px 8px 0 0;
95
+ }
96
+ .component-content {
97
+ border: 1px solid #e5e7eb;
98
+ border-top: none;
99
+ border-radius: 0 0 8px 8px;
100
+ padding: 15px;
101
+ }
102
+ .attribute {
103
+ display: flex;
104
+ padding: 10px 0;
105
+ border-bottom: 1px solid #f3f4f6;
106
+ }
107
+ .attribute:last-child { border-bottom: none; }
108
+ .attribute-name {
109
+ font-weight: 600;
110
+ color: #374151;
111
+ width: 200px;
112
+ flex-shrink: 0;
113
+ }
114
+ .attribute-value {
115
+ color: #4b5563;
116
+ flex: 1;
117
+ word-break: break-word;
118
+ }
119
+ .extra-info {
120
+ margin-bottom: 30px;
121
+ padding: 15px;
122
+ background: #f9fafb;
123
+ border-radius: 8px;
124
+ border: 1px solid #e5e7eb;
125
+ }
126
+ .extra-item { display: inline-block; margin-right: 20px; margin-bottom: 5px; }
127
+ .extra-label { font-weight: 600; color: #374151; }
128
+ .extra-value { color: #4b5563; margin-left: 5px; }
129
+ @media print {
130
+ body { padding: 20px; }
131
+ .component { page-break-inside: avoid; }
132
+ @page { margin: 20mm; margin-top: 10mm; margin-bottom: 10mm; }
133
+ }
134
+ @page { size: auto; margin: 10mm; }
135
+ `;
136
+ /**
137
+ * Open a print window with the generated HTML and trigger browser print dialog
138
+ */
139
+ export function openPdfPrintWindow(htmlContent) {
140
+ const printWindow = window.open("", "_blank");
141
+ if (!printWindow) {
142
+ alert("Veuillez autoriser les popups pour télécharger le PDF");
143
+ return;
144
+ }
145
+ printWindow.document.write(`
146
+ <!DOCTYPE html>
147
+ <html>
148
+ <head>
149
+ <title>Sauvegarde</title>
150
+ <style>${PDF_STYLES}</style>
151
+ </head>
152
+ <body>
153
+ ${htmlContent}
154
+ <script>
155
+ window.onload = function() {
156
+ window.print();
157
+ window.onafterprint = function() { window.close(); };
158
+ };
159
+ </script>
160
+ </body>
161
+ </html>
162
+ `);
163
+ printWindow.document.close();
164
+ }
165
+ //# sourceMappingURL=pdfExport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfExport.js","sourceRoot":"","sources":["../../src/util/pdfExport.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,SAAS,EACT,UAAU,EACV,kBAAkB,GACI;IACtB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAClD,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,IAAI,IAAI,GAAG;;YAED,KAAK,IAAI,oBAAoB;qBACpB,IAAI;;GAEtB,CAAC;IAEF,eAAe;IACf,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,IAAI,IAAI,0BAA0B,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACjD,IAAI,IAAI;;sCAEwB,GAAG;sCACH,MAAM,CAAC,KAAK,CAAC;;OAE5C,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,QAAQ,CAAC;IACnB,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC1D,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE5D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CACnD,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAC,OAAA,MAAA,MAAA,kBAAkB,CAAC,QAAQ,CAAC,0CAAG,QAAQ,CAAC,mCAAI,IAAI,CAAA,EAAA,CACjE,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEvC,IAAI,IAAI;;uCAE2B,QAAQ;;KAE1C,CAAC;QAEF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE;YAC1C,IAAI,IAAI;;wCAE0B,QAAQ;yCACP,WAAW,CAAC,KAAK,CAAC;;OAEpD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI;;;KAGP,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgElB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;;;;;iBAKZ,UAAU;;;UAGjB,WAAW;;;;;;;;;GASlB,CAAC,CAAC;IACH,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC"}
@@ -1,12 +1,12 @@
1
- import { Component, Data, Permission, ComponentDataHistory, RubricDataValues } from "./type";
1
+ import { Component, Data, ComponentDataHistory, RubricDataValues, PermissionType } from "./type";
2
2
  /**
3
3
  * Get permission level for a specific component
4
4
  */
5
- export declare function getComponentPermission(permission: Permission | null, componentName: string): "read" | "write" | null;
5
+ export declare function getComponentPermission(permissions: PermissionType[] | undefined, componentName: string): "read" | "write" | null;
6
6
  /**
7
7
  * Check if user can edit a component (has write permission)
8
8
  */
9
- export declare function canEditComponent(permission: Permission | null, componentName: string): boolean;
9
+ export declare function canEditComponent(permission: PermissionType[] | undefined, componentName: string): boolean;
10
10
  /**
11
11
  * Groups data by component using INDEX-BASED mapping for first N items,
12
12
  * then COMPONENT ID matching for historical items.
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Get permission level for a specific component
3
3
  */
4
- export function getComponentPermission(permission, componentName) {
5
- if (!permission)
4
+ export function getComponentPermission(permissions, componentName) {
5
+ if (!permissions || !permissions.length)
6
6
  return null;
7
- const perm = permission.permissions.find((p) => p.component === componentName);
7
+ const perm = permissions.find((p) => p.component === componentName);
8
8
  return (perm === null || perm === void 0 ? void 0 : perm.permission) || null;
9
9
  }
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"rubricDisplayer.js","sourceRoot":"","sources":["../../src/util/rubricDisplayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rubricDisplayer.js","sourceRoot":"","sources":["../../src/util/rubricDisplayer.ts"],"names":[],"mappings":"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"}
@@ -82,6 +82,7 @@ export interface ComponentResult {
82
82
  export interface Data<TComponent = string | Component> {
83
83
  _id: string;
84
84
  proprietor: string;
85
+ creator: string;
85
86
  from: string;
86
87
  component: TComponent;
87
88
  value: DataJSON;
@@ -124,4 +125,10 @@ export interface ComponentDataHistory {
124
125
  currentData: Data | null;
125
126
  history: Data[];
126
127
  }
128
+ export interface User {
129
+ id: string;
130
+ email?: string;
131
+ firstName?: string;
132
+ lastName?: string;
133
+ }
127
134
  export type RubricDataValues = Record<string, DataJSON>;
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/util/type.ts"],"names":[],"mappings":"AAIA,QAAQ;AACR,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,6BAAY,CAAA;IACZ,iCAAgB,CAAA;IAChB,iCAAgB,CAAA;IAChB,oCAAmB,CAAA;AACrB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,CAAN,IAAY,iBAiBX;AAjBD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,gDAA2B,CAAA;IAC3B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,oDAA+B,CAAA;AACjC,CAAC,EAjBW,iBAAiB,KAAjB,iBAAiB,QAiB5B;AAED,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,4BAAW,CAAA;IACX,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,8CAA6B,CAAA;IAC7B,sCAAqB,CAAA;IACrB,kCAAiB,CAAA;IACjB,8CAA6B,CAAA;IAC7B,8BAAa,CAAA;AACf,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB;AA8ED,uCAAuC;AACvC,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,mCAAiB,CAAA;IACjB,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/util/type.ts"],"names":[],"mappings":"AAIA,QAAQ;AACR,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,6BAAY,CAAA;IACZ,iCAAgB,CAAA;IAChB,iCAAgB,CAAA;IAChB,oCAAmB,CAAA;AACrB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,CAAN,IAAY,iBAiBX;AAjBD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;IACnB,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,gDAA2B,CAAA;IAC3B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,oDAA+B,CAAA;AACjC,CAAC,EAjBW,iBAAiB,KAAjB,iBAAiB,QAiB5B;AAED,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,4BAAW,CAAA;IACX,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,8CAA6B,CAAA;IAC7B,sCAAqB,CAAA;IACrB,kCAAiB,CAAA;IACjB,8CAA6B,CAAA;IAC7B,8BAAa,CAAA;AACf,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB;AA+ED,uCAAuC;AACvC,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,mCAAiB,CAAA;IACjB,+BAAa,CAAA;AACf,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "module-package-comp",
3
- "version": "2.3.1",
3
+ "version": "2.4.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",