From 9f98b975c1995df3baafee1a8e31e4c19a8a22da Mon Sep 17 00:00:00 2001 From: Jacob Wright Date: Tue, 19 Nov 2019 16:40:20 -0700 Subject: [PATCH] Updates names and saves 18 bytes. --- src/runtime/internal/style_manager.ts | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/runtime/internal/style_manager.ts b/src/runtime/internal/style_manager.ts index 61a8540626..8fc6514cbc 100644 --- a/src/runtime/internal/style_manager.ts +++ b/src/runtime/internal/style_manager.ts @@ -3,8 +3,8 @@ import { raf } from './environment'; type DocStyles = [CSSStyleSheet, Record]; -let activeDocs = new Set(); -let docStyles = new WeakMap(); +let active_docs = new Set(); +let doc_styles = new Map(); let active = 0; // https://github.com/darkskyapp/string-hash/blob/master/index.js @@ -28,15 +28,11 @@ export function create_rule(node: Element & ElementCSSInlineStyle, a: number, b: const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`; const name = `__svelte_${hash(rule)}_${uid}`; const doc = node.ownerDocument; - activeDocs.add(doc); - let [ stylesheet, current_rules ] = (docStyles.get(doc) || []) as DocStyles; - if (!stylesheet) { - current_rules = {}; - const style = element('style'); - doc.head.appendChild(style); - stylesheet = style.sheet as CSSStyleSheet; - docStyles.set(doc, [ stylesheet, current_rules ]); - } + active_docs.add(doc); + const [ stylesheet, current_rules ] = (doc_styles.has(doc) ? doc_styles : doc_styles.set(doc, [ + (doc.head.appendChild(element('style') as HTMLStyleElement).sheet as CSSStyleSheet), + {} + ])).get(doc) as DocStyles; if (!current_rules[name]) { current_rules[name] = true; @@ -66,12 +62,12 @@ export function delete_rule(node: Element & ElementCSSInlineStyle, name?: string export function clear_rules() { raf(() => { if (active) return; - activeDocs.forEach(doc => { - const [ stylesheet ] = docStyles.get(doc); + active_docs.forEach(doc => { + const [ stylesheet ] = doc_styles.get(doc); let i = stylesheet.cssRules.length; while (i--) stylesheet.deleteRule(i); - docStyles.set(doc, [ stylesheet, {} ]); + doc_styles.set(doc, [ stylesheet, {} ]); }); - activeDocs.clear(); + active_docs.clear(); }); }