etiquetas.js 1.0.0-alpha.2 → 1.0.0-alpha.20

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/README.md CHANGED
@@ -1,171 +1,130 @@
1
- # 🏷️ Sistema de Etiquetas - Etiquetas.js
2
-
3
- Sistema completo para geração de etiquetas de peças, tamponamentos, insumos, retalhos e volumes com suporte a impressão e download de PDFs.
4
-
5
- ## 📋 Recursos Principais
6
-
7
- - Geração de 5 tipos de etiquetas: Peças, Tamponamentos, Insumos, Retalhos e Volumes
8
- - Suporte para impressão direta
9
- - Download em formato PDF
10
- - Templates personalizáveis
11
- - Integração com API para busca de modelos de etiquetas
12
- - **🔄 Legacy Transformer** - Sistema de transformação de dados legados
13
-
14
- ## 🚀 Instalação
15
-
16
- ```bash
17
- npm install etiquetas.js
18
- ```
19
-
20
- ## ⚙️ Uso Básico
21
-
22
- ```javascript
23
- import { etiquetas } from 'etiquetas.js';
24
-
25
- // Inicializar o sistema com seu token JWT para autenticação na API
26
- etiquetas.init({
27
- token:'<jwt-token>'
28
- });
29
-
30
- // Gerar etiqueta de peça
31
- const pdfPeca = await etiquetas.makePartLabel(dadosPeca, '<id-etiqueta>');
32
-
33
- // Download ou impressão
34
- await etiquetas.downloadPDF(pdfPeca, '<nome-etiqueta>.pdf');
35
- // ou
36
- await etiquetas.sendToPrinter(pdfPeca);
37
- ```
38
-
39
- ## 🔄 Legacy Transformer
40
-
41
- O sistema de transformação de dados legados permite converter dados antigos para o formato atual das etiquetas. **O transformer padrão é configurado na função `init()`** e será aplicado automaticamente em todas as operações.
42
-
43
- ### Configuração no Init
44
-
45
- ```javascript
46
- import etiquetas from './src/etiquetas.js';
47
-
48
- // Inicializar com legacy transformer (padrão)
49
- etiquetas.init({
50
- token: 'your-token',
51
- // defaultTransformer não especificado = legacy por padrão
52
- });
53
-
54
- // Inicializar com transformer customizado como padrão
55
- etiquetas.init({
56
- token: 'your-token',
57
- defaultTransformer: {
58
- fieldMap: 'custom',
59
- fieldMapSource: {
60
- old_field: 'new_field',
61
- status: ['active', 'inactive', 'pending']
62
- }
63
- }
64
- });
65
-
66
- // Inicializar sem transformer (desabilitado)
67
- etiquetas.init({
68
- token: 'your-token',
69
- defaultTransformer: {
70
- fieldMap: 'none'
71
- }
72
- });
73
- ```
74
-
75
- ### Uso Básico (Usa Padrão do Init)
76
-
77
- ```javascript
78
- // O transformer configurado no init será aplicado automaticamente
79
- const pdf = await etiquetas.makeLabel({
80
- PROJETO_ID: 123,
81
- NOME_PROJETO: 'Sistema Antigo',
82
- STATUS: 'ATIVO'
83
- }, 'template-id');
84
-
85
- // Também funciona com sendLabel
86
- const result = await etiquetas.sendLabel(legacyData, 'template-id');
87
- ```
88
-
89
- ### Sobrescrever Transformer Padrão
90
-
91
- ```javascript
92
- // Sobrescrever para usar legacy transformer
93
- const pdf = await etiquetas.makeLabel(legacyData, 'template-id', {
94
- transformer: {
95
- fieldMap: "legacy"
96
- }
97
- });
98
-
99
- // Sobrescrever para usar fieldMap customizado
100
- const customFieldMap = {
101
- // Mapeamento simples
102
- OLD_FIELD: 'newField',
103
-
104
- // Mapeamento com array de valores
105
- STATUS: ['active', 'inactive', 'pending'],
106
-
107
- // Transformação com função
108
- CUSTOM_CODE: (data) => data.code ? `NEW_${data.code}` : null
109
- };
110
-
111
- const pdf = await etiquetas.makeLabel(legacyData, 'template-id', {
112
- transformer: {
113
- fieldMap: "custom",
114
- fieldMapSource: customFieldMap
115
- }
116
- });
117
-
118
- // Sobrescrever para desabilitar transformer
119
- const pdf = await etiquetas.makeLabel(normalizedData, 'template-id', {
120
- transformer: {
121
- fieldMap: "none"
122
- }
123
- });
124
- ```
125
-
126
- ### Opções do Init
127
-
128
- | Opção | Tipo | Descrição |
129
- |-------|------|-----------|
130
- | `defaultTransformer.fieldMap` | string | Tipo do fieldMap padrão: `"legacy"` (padrão), `"custom"` ou `"none"` |
131
- | `defaultTransformer.fieldMapSource` | Object | FieldMap customizado (obrigatório se `fieldMap="custom"`) |
132
-
133
- ### Opções das Funções (Sobrescrever Padrão)
134
-
135
- | Opção | Tipo | Descrição |
136
- |-------|------|-----------|
137
- | `transformer.fieldMap` | string | Tipo do fieldMap: `"legacy"`, `"custom"` ou `"none"` (sobrescreve padrão do init) |
138
- | `transformer.fieldMapSource` | Object | FieldMap customizado (obrigatório se `fieldMap="custom"`) |
139
-
140
- ### API Legacy (Deprecated)
141
-
142
- ```javascript
143
- // ⚠️ API antiga - ainda funciona mas está deprecated
144
- const pdf = await etiquetas.makeLabel(legacyData, 'template-id', {
145
- useLegacyTransformer: true,
146
- customFieldMap: myFieldMap
147
- });
148
- ```
149
-
150
- ### Validação e Tratamento de Erros
151
-
152
- ```javascript
153
- // Validar fieldMap antes de usar
154
- const isValid = etiquetas.validateFieldMap(myFieldMap);
155
-
156
- // Tratamento de erros
157
- try {
158
- const pdf = await etiquetas.makeLabel(legacyData, 'template-id', {
159
- transformer: {
160
- fieldMap: "custom",
161
- fieldMapSource: invalidFieldMap
162
- }
163
- });
164
- } catch (error) {
165
- console.error('Erro na transformação:', error.message);
166
- }
167
- ```
168
-
169
- Para documentação completa sobre transformações, consulte: [src/transformers/README.md](src/transformers/README.md)
170
-
171
-
1
+ # 🏷️ Sistema de Etiquetas - Etiquetas.js
2
+
3
+ Sistema completo para geração de etiquetas de peças, tamponamentos, insumos, retalhos e volumes com suporte a impressão e download de PDFs.
4
+
5
+
6
+
7
+ ## 🚀 Instalação
8
+
9
+ ```bash
10
+ npm install etiquetas.js
11
+ ```
12
+
13
+ ## ⚙️ Configuração Inicial
14
+
15
+ ```javascript
16
+ import etiquetas from 'etiquetas.js';
17
+
18
+ // Inicializar o sistema
19
+ etiquetas.init({
20
+ token: '<jwt-token>',
21
+ baseURL: 'https://api.exemplo.com' // OBRIGATÓRIO: URL base da API
22
+ });
23
+ ```
24
+
25
+ ## 📚 API Principal
26
+ <jwt-token> é utilizado como authorization na api dinabox para obter os templates de etiqueta
27
+ ### Inicialização e Configuração
28
+
29
+ ```javascript
30
+ // Inicializar sistema
31
+ etiquetas.init({
32
+ token: '<jwt-token>', // Token JWT para autenticação
33
+ baseURL: 'https://api.exemplo.com', // URL base da API (OBRIGATÓRIO)
34
+ autoConnectPrinter: true, // Auto-conectar ao SSE da impressora (padrão: true)
35
+ defaultTransformer: { // Configuração do transformer (opcional)
36
+ fieldMap: 'legacy' // Opções: 'legacy', 'custom', 'none'
37
+ }
38
+ });
39
+
40
+
41
+ // Verificar status da impressora
42
+ const status = await etiquetas.getPrinterStatus();
43
+ ```
44
+
45
+ ### Geração de Etiquetas
46
+
47
+ const labelData = [{variableProps: {
48
+
49
+
50
+ ```javascript
51
+ // Gerar etiqueta de peça
52
+ [{
53
+ <all-variables>
54
+ }, specialProps: {
55
+ <all-specialprops>
56
+ }]
57
+ O tamanho do array de labelData é a quantidade de etiquetas que serão geradas. Os dados <all-variables> e <all-specialprops>
58
+
59
+ const pdfPeca = await etiquetas.makeLabel({variableProps: {
60
+ PROJETO_ID:123
61
+
62
+ },specialProps: {
63
+ lamination: {
64
+
65
+ material_id:"123",
66
+ edges: {
67
+ left_id:"123",
68
+ right_id:null,
69
+ bottom_id:"123",
70
+ top_id:"245"
71
+ }
72
+
73
+ },
74
+
75
+ }
76
+ }}, <label-id>);
77
+ ```
78
+
79
+ ### Saída e Impressão
80
+
81
+
82
+
83
+ ```javascript
84
+ // Download de PDF
85
+ await etiquetas.downloadPDF(pdfBuffer, 'etiqueta.pdf');
86
+
87
+ // Enviar para impressora
88
+ await etiquetas.sendToPrinter(pdfBuffer);
89
+
90
+ // Envio inteligente (imprime se conectado, senão faz download)
91
+ await etiquetas.sendLabel(labelData, <label-id>);
92
+
93
+ ```
94
+
95
+ ## 🎨 Templates
96
+
97
+ ### Templates Disponíveis
98
+ Utilizando a API das labels busque o ID do template
99
+
100
+ Cada arquivo contém a definição de variáveis e propriedades especiais que podem ser usadas na geração das etiquetas correspondentes.
101
+
102
+ ## 📑 Variáveis e SpecialProps dos Templates
103
+
104
+ Abaixo estão listadas todas as variáveis (`variableProps`) e propriedades especiais (`specialProps`) disponíveis para uso em qualquer template de etiqueta. Use-as conforme o tipo de etiqueta desejado.
105
+
106
+ ### Lista universal de variableProps
107
+
108
+ - {{PROJETO_NOME}}, {{PROJETO_ID}}, {{LOTE_ID}}, {{CLIENTE_NOME}}, {{MODULO_NOME}}, {{MODULO_QTD}}, {{MODULO_REF}}, {{MODULO_OBS}}, {{PECA_ID}}, {{PECA_CODIGO}}, {{PECA_REF}}, {{PECA_INDICE}}, {{PECA_INDICE2}}, {{PECA_NOME}}, {{PECA_OBS}}, {{LARGURA}}, {{ALTURA}}, {{ESPESSURA}}, {{MN}}, {{MA}}, {{ML}}, {{FURO_A}}, {{FURO_A2}}, {{FURO_B}}, {{FURO_B2}}, {{FE}}, {{FD}}, {{FS}}, {{FI}}, {{PECA_TIPO}}, {{MATERIAL_NOME}}, {{TAMPONAMENTO_ID}}, {{TAMPONAMENTO_REF}}, {{TAMPONAMENTO_QT}}, {{TAMPONAMENTO_PESO}}, {{TAMPONAMENTO_NOME}}, {{INSUMO_NOME}}, {{INSUMO_ID}}, {{INSUMO_DIMENSOES}}, {{INSUMO_QTD}}, {{INSUMO_PESO}}, {{INSUMO_REF}}, {{INSUMO_MARCA}}, {{INSUMO_CATEGORIA}}, {{INSUMO_FABRICANTE}}, {{RETALHO_ID}}, {{DATA_CRIACAO}}, {{RETALHO_INDICE}}, {{LADO_USINAGEM}}, {{RETALHO_NOME}}, {{RETALHO_QT}}, {{RETALHO_PESO}}, {{RETALHO_DIMENSOES}}, {{RETALHO_MATERIAL}}, {{RETALHO_ORIGEM}}, {{CODIGO_A}}, {{CODIGO_B}}, {{FURO_A_SD}}, {{FURO_B_SD}}, {{FURO_TOPO}}, {{VOLUME_ID}}, {{VOLUME_NOME}}, {{VOLUME_PESO}}, {{VOLUME_DATA}}, {{VOLUME_DESCRICAO}}, {{VOLUME_PECAS}}, {{VOLUME_DIMENSOES}}
109
+
110
+ > **Observação:** Você pode usar qualquer combinação dessas variáveis em qualquer template, desde que o template utilize o campo correspondente.
111
+
112
+ ---
113
+
114
+ ### Lista universal de specialProps
115
+
116
+ - **rect**: Retângulo. Dados necessários: já vem no template.
117
+ - **lamination**: Desenha bordas de laminação conforme materiais. Dados necessários: informações de borda e material (edge_left_id, material_id, etc).
118
+ - **enhancedLamination**: Laminação detalhada, com indicação visual de materiais e furos. Dados necessários: dados de peça, bordas e furos (holes_diagram, width, height, etc).
119
+ - **identifierByProject**: Gera um identificador visual (preto e branco) para o projeto. Dados necessários: project_id, numberByProject.
120
+ - **colorfulIdentifierByProject**: Igual ao anterior, mas colorido. Dados necessários: project_id, numberByProject, color.
121
+ - **barCode**: Gera um código de barras. Dados necessários: código a ser convertido (originBarcode, customBarcode, code_a, code_b, etc).
122
+ - **miniSheet**: Miniatura da chapa. Dados necessários: lista de partes (parts), dimensões da chapa (height, width).
123
+ - **miniPartA**: Miniatura da peça (lado A). Dados necessários: dados da peça (width, height, index).
124
+ - **miniPartB**: Miniatura da peça (lado B). Dados necessários: dados da peça (width, height, index).
125
+ - **Image**: Imagem. Dados necessários: já vem no template.
126
+ - **text**: Texto estático. Dados necessários: já vem no template.
127
+ - **volumeContent**: Gera uma tabela de itens do volume. Dados necessários: itemList (array de itens do volume).
128
+
129
+ > **Observação:** Você pode usar qualquer combinação dessas specialProps em qualquer template, desde que o template utilize o campo correspondente.
130
+
@@ -1,39 +1,39 @@
1
- import { a1, a, j, L, b, N, M, Q, P, a7, F, H, K, U, V, k, T, a9, E, I, y, S, W, B, l, a8, a0, Y, a4, a5, o, h, aa, $, d, n, p, v, e, f, i, t, r, a3, C, D, q, G, w, Z, a6, O, s, R, x, z, J, X, a2, u, m, A } from "./index-BmMBOPX1.js";
1
+ import { a3, b, j, L, N, M, R, U, Q, a9, F, H, K, W, X, k, V, ab, E, I, y, T, Y, B, l, aa, a2, $, a6, a7, o, h, ac, a1, d, n, p, v, e, f, i, t, r, a5, C, D, q, G, w, a0, a8, P, s, S, x, O, z, J, Z, a4, u, m, A } from "./index-DC5U961t.js";
2
2
  export {
3
- a1 as DEFAULT_LAMINATION_COLORS,
4
- a as LABEL_TYPES,
3
+ a3 as DEFAULT_LAMINATION_COLORS,
4
+ b as LABEL_TYPES,
5
5
  j as LabelWorker,
6
6
  L as LabelsAPI,
7
- b as apiClient,
8
7
  N as base64Decode,
9
8
  M as base64Encode,
10
- Q as checkPrinterAvailability,
11
- P as convertPdfToImages,
12
- a7 as convertSVGTableToAutoTableData,
9
+ R as checkPrinterAvailability,
10
+ U as convertPdfFileToArrayBuffer,
11
+ Q as convertPdfToImages,
12
+ a9 as convertSVGTableToAutoTableData,
13
13
  F as createBrowserCanvas,
14
14
  H as createBrowserDOM,
15
15
  K as createBuffer,
16
- U as createImage,
17
- V as createImageFromPart,
16
+ W as createImage,
17
+ X as createImageFromPart,
18
18
  k as createLabelWorker,
19
- T as createMiniSheet,
20
- a9 as dataTypeList,
19
+ V as createMiniSheet,
20
+ ab as dataTypeList,
21
21
  E as default,
22
22
  I as downloadFile,
23
23
  y as downloadPDF,
24
- S as downloadPdfFallback,
25
- W as drawRect,
24
+ T as downloadPdfFallback,
25
+ Y as drawRect,
26
26
  B as etiquetas,
27
27
  l as generateLabelsFromHookData,
28
- a8 as generateTableSVG,
29
- a0 as getAspectRatio,
30
- Y as getBorderColor,
31
- a4 as getImagesFromUrl,
32
- a5 as getImagesFromUrlToBase64,
28
+ aa as generateTableSVG,
29
+ a2 as getAspectRatio,
30
+ $ as getBorderColor,
31
+ a6 as getImagesFromUrl,
32
+ a7 as getImagesFromUrlToBase64,
33
33
  o as getInputForLabels,
34
34
  h as getInputLabels,
35
- aa as getInputsByCategory,
36
- $ as getNode,
35
+ ac as getInputsByCategory,
36
+ a1 as getNode,
37
37
  d as getPartLabels,
38
38
  n as getPartsForLabels,
39
39
  p as getPartsFromProjectToLabels,
@@ -43,22 +43,23 @@ export {
43
43
  i as getVolumeLabels,
44
44
  t as init,
45
45
  r as initialState,
46
- a3 as initializeBrowserEnvironment,
46
+ a5 as initializeBrowserEnvironment,
47
47
  C as isBrowser,
48
48
  D as isNodeJS,
49
49
  q as labelTypeNames,
50
50
  G as loadImageBrowser,
51
51
  w as makeLabel,
52
- Z as makeLamination,
53
- a6 as mmToPx,
54
- O as processLabelForParts,
52
+ a0 as makeLamination,
53
+ a8 as mmToPx,
54
+ P as processLabelForParts,
55
55
  s as reducer,
56
- R as sendImagesToPrinter,
56
+ S as sendImagesToPrinter,
57
57
  x as sendLabel,
58
+ O as sendPdfFileToPrinter,
58
59
  z as sendToPrinter,
59
60
  J as serializeXML,
60
- X as setBorder,
61
- a2 as stopCreatingLabels,
61
+ Z as setBorder,
62
+ a4 as stopCreatingLabels,
62
63
  u as useLabelData,
63
64
  m as useLabelStore,
64
65
  A as validateLabelData