Skip to content

Commit

Permalink
perf[ThemePicker]: refine updateStyle function (#554)
Browse files Browse the repository at this point in the history
* theme replacing should cut tons of irrelevant css
  • Loading branch information
WangXinhai authored and PanJiaChen committed Feb 25, 2019
1 parent 2e89ef4 commit 6b88c41
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/components/ThemePicker/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,18 @@ export default {
methods: {
updateStyle(style, oldCluster, newCluster) {
let newStyle = style
const colorOverrides = [] // only capture color overides
oldCluster.forEach((color, index) => {
newStyle = newStyle.replace(new RegExp(color, 'ig'), newCluster[index])
const value = newCluster[index]
const color_plain = color.replace(/([()])/g, '\\$1')
const repl = new RegExp(`(^|})([^{]+{[^{}]+)${color_plain}\\b([^}]*)(?=})`, 'gi')
const nestRepl = new RegExp(color_plain, 'ig') // for greed matching before the 'color'
let v
while ((v = repl.exec(style))) {
colorOverrides.push(v[2].replace(nestRepl, value) + value + v[3] + '}') // '}' not captured in the regexp repl to reserve it as locator-boundary
}
})
return newStyle
return colorOverrides.join('')
},
getCSSString(url, callback, variable) {
Expand Down

0 comments on commit 6b88c41

Please sign in to comment.