@edusites/bancos-brasil 1.0.5 → 1.0.7
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/package.json +1 -1
- package/src/core.js +38 -11
package/package.json
CHANGED
package/src/core.js
CHANGED
|
@@ -82,15 +82,34 @@ function criarFundo(formato, tamanho, corFundo) {
|
|
|
82
82
|
return ''
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
function
|
|
86
|
-
|
|
85
|
+
function extrairConteudo(svgCompleto) {
|
|
86
|
+
// Extrai só o conteúdo interno do SVG (paths, circles, etc)
|
|
87
|
+
const match = svgCompleto.match(/<svg[^>]*>([\s\S]*)<\/svg>/)
|
|
88
|
+
return match ? match[1].trim() : ''
|
|
87
89
|
}
|
|
88
90
|
|
|
89
|
-
function
|
|
90
|
-
|
|
91
|
-
const
|
|
91
|
+
function extrairViewBox(svgCompleto) {
|
|
92
|
+
// Extrai o viewBox original
|
|
93
|
+
const match = svgCompleto.match(/viewBox=["']([^"']+)["']/)
|
|
94
|
+
return match ? match[1] : '0 0 108 108'
|
|
95
|
+
}
|
|
92
96
|
|
|
93
|
-
|
|
97
|
+
function aplicarCor(conteudo, cor) {
|
|
98
|
+
// Aplica a cor a todos os elementos gráficos
|
|
99
|
+
const elementos = ['path', 'circle', 'rect', 'polygon', 'ellipse', 'line', 'polyline']
|
|
100
|
+
let resultado = conteudo
|
|
101
|
+
|
|
102
|
+
elementos.forEach((elemento) => {
|
|
103
|
+
// Regex para encontrar cada elemento e seus atributos
|
|
104
|
+
const regex = new RegExp(`<${elemento}([^>]*)(\\/?>)`, 'g')
|
|
105
|
+
resultado = resultado.replace(regex, (match, attrs, fechamento) => {
|
|
106
|
+
// Remove fill existente e adiciona o novo
|
|
107
|
+
const attrsLimpos = attrs.replace(/\s*fill="[^"]*"/g, '')
|
|
108
|
+
return `<${elemento}${attrsLimpos} fill="${cor}"${fechamento}`
|
|
109
|
+
})
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
return resultado
|
|
94
113
|
}
|
|
95
114
|
|
|
96
115
|
export function svgBanco(options) {
|
|
@@ -112,16 +131,24 @@ export function svgBanco(options) {
|
|
|
112
131
|
tamanho: tamanho || preset.tamanho
|
|
113
132
|
}
|
|
114
133
|
|
|
115
|
-
const
|
|
116
|
-
if (!
|
|
134
|
+
const svgOriginal = obterIcone(nomeNormalizado)
|
|
135
|
+
if (!svgOriginal) return null
|
|
136
|
+
|
|
137
|
+
const viewBoxOriginal = extrairViewBox(svgOriginal)
|
|
138
|
+
const conteudoOriginal = extrairConteudo(svgOriginal)
|
|
139
|
+
const conteudoColorido = aplicarCor(conteudoOriginal, config.cor)
|
|
117
140
|
|
|
118
|
-
|
|
119
|
-
|
|
141
|
+
// Calcula padding e escala para centralizar o ícone
|
|
142
|
+
const padding = config.tamanho * 0.15
|
|
143
|
+
const tamanhoIcone = config.tamanho - padding * 2
|
|
144
|
+
const [, , vbWidth, vbHeight] = viewBoxOriginal.split(' ').map(Number)
|
|
145
|
+
const escala = tamanhoIcone / Math.max(vbWidth, vbHeight)
|
|
120
146
|
|
|
121
147
|
const elementoFundo = config.formato !== 'sem' ? criarFundo(config.formato, config.tamanho, config.fundo) : ''
|
|
122
148
|
|
|
123
149
|
const classAttr = className ? ` class="${className}"` : ''
|
|
124
|
-
|
|
150
|
+
|
|
151
|
+
return `<svg width="${config.tamanho}" height="${config.tamanho}" viewBox="0 0 ${config.tamanho} ${config.tamanho}" fill="none" xmlns="http://www.w3.org/2000/svg"${classAttr}>${elementoFundo}<g transform="translate(${padding}, ${padding}) scale(${escala})">${conteudoColorido}</g></svg>`
|
|
125
152
|
}
|
|
126
153
|
|
|
127
154
|
export function listarBancos() {
|