etiquetas.js 1.0.0-alpha.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.
@@ -0,0 +1,139 @@
1
+ /**
2
+ * 🏷️ TEMPLATES DO SISTEMA DE ETIQUETAS
3
+ *
4
+ * Configurações e definições de templates para cada tipo de etiqueta
5
+ */
6
+
7
+ import { templateVariables } from './constants.js';
8
+ import { LabelsAPI } from '../api/api.js';
9
+
10
+ // ============================================================================
11
+ // TEMPLATES DE PEÇAS
12
+ // ============================================================================
13
+
14
+
15
+ /**
16
+ * Obtém um template pelo seu ID a partir da API de etiquetas
17
+ * @param {number|string} templateId - ID do template/etiqueta a buscar
18
+ * @returns {Promise<Object>} Template com dados da API
19
+ */
20
+ export async function getTemplateById(templateId) {
21
+ try {
22
+ // Converte para número se for string numérica
23
+
24
+
25
+
26
+ // Busca na API pelo ID
27
+ const labelData = await LabelsAPI.getLabel(templateId);
28
+
29
+ if (!labelData) {
30
+ throw new Error(`Template/etiqueta não encontrado com ID: ${templateId}`);
31
+ }
32
+
33
+
34
+
35
+
36
+ // Retorna em formato de array conforme esperado pela função loadLabelTemplate
37
+ console.log('templateContent:', labelData);
38
+ return JSON.parse(labelData.label_content);
39
+ } catch (error) {
40
+ console.error(`Erro ao buscar template: ${error.message}`);
41
+ throw error;
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Obtém templates por tipo
47
+ * @param {string} type - Tipo de etiqueta (parts, woodwork, inputs, scraps, volumes)
48
+ * @returns {Array} Lista de templates do tipo especificado
49
+ */
50
+ export function getTemplatesByType(type) {
51
+ return Object.values(allTemplates).filter(template => template.type === type);
52
+ }
53
+
54
+ /**
55
+ * Lista todos os IDs de templates disponíveis
56
+ * @returns {Array} Lista de IDs de templates
57
+ */
58
+ export function getTemplateIds() {
59
+ return Object.keys(allTemplates);
60
+ }
61
+
62
+ /**
63
+ * Valida se um template possui estrutura válida
64
+ * @param {Object} template - Template a ser validado
65
+ * @returns {boolean} True se válido, false caso contrário
66
+ */
67
+ export function validateTemplate(template) {
68
+ if (!template || typeof template !== 'object') return false;
69
+
70
+ const requiredFields = ['id', 'name', 'type', 'pageWidth', 'pageHeight', 'elements'];
71
+
72
+ for (const field of requiredFields) {
73
+ if (!(field in template)) return false;
74
+ }
75
+
76
+ if (!Array.isArray(template.elements)) return false;
77
+
78
+ return true;
79
+ }
80
+
81
+ /**
82
+ * Obtém variáveis utilizadas em um template
83
+ * @param {Object} template - Template a ser analisado
84
+ * @returns {Array} Lista de variáveis encontradas
85
+ */
86
+ export function getTemplateVariables(template) {
87
+ if (!validateTemplate(template)) return [];
88
+
89
+ const variables = new Set();
90
+ const variableRegex = /\{\{([^}]+)\}\}/g;
91
+
92
+ template.elements.forEach(element => {
93
+ if (element.content) {
94
+ let match;
95
+ while ((match = variableRegex.exec(element.content)) !== null) {
96
+ variables.add(match[1]);
97
+ }
98
+ }
99
+ });
100
+
101
+ return Array.from(variables);
102
+ }
103
+
104
+ /**
105
+ * Substitui variáveis em um template com dados fornecidos
106
+ * @param {Object} template - Template base
107
+ * @param {Object} data - Dados para substituição
108
+ * @returns {Object} Template com variáveis substituídas
109
+ */
110
+ export function replaceTemplateVariables(template, data) {
111
+ if (!validateTemplate(template)) return template;
112
+
113
+ const processedTemplate = JSON.parse(JSON.stringify(template));
114
+
115
+ processedTemplate.elements = processedTemplate.elements.map(element => {
116
+ if (element.content) {
117
+ element.content = element.content.replace(/\{\{([^}]+)\}\}/g, (match, variable) => {
118
+ return data[variable] || match;
119
+ });
120
+ }
121
+ return element;
122
+ });
123
+
124
+ return processedTemplate;
125
+ }
126
+
127
+ // ============================================================================
128
+ // EXPORTAÇÃO PADRÃO
129
+ // ============================================================================
130
+
131
+ export default {
132
+
133
+ getTemplateById,
134
+ getTemplatesByType,
135
+ getTemplateIds,
136
+ validateTemplate,
137
+ getTemplateVariables,
138
+ replaceTemplateVariables
139
+ };