Switch unique_id from `Date.now` to `Math.random`; include basic typing for variable assignment.

pull/7107/head
typhonrt 5 years ago
parent ebec1500e9
commit 72f64abeb6

@ -9,9 +9,9 @@ const active_docs = new Set<ExtendedDoc>();
let active = 0; let active = 0;
// A suitable unique ID to create separate style sheets per Svelte runtime. Fixes issue #7026. // A suitable unique ID to create separate style sheets per Svelte runtime. Fixes issue #7026.
// It is possible a more universal / UUID may be relevant to use instead of `Date.now` in the future. // It is possible a more universal / UUID may be relevant to use instead of `Math.random` in the future.
// Define unique keys to store the style transitions so one Svelte runtime does not clobber the data of another. // Define unique keys to store the style transitions so one Svelte runtime does not clobber the data of another.
const unique_id = Date.now(); const unique_id = Math.random();
const svelte_stylesheet = `__svelte_stylesheet_${unique_id}`; const svelte_stylesheet = `__svelte_stylesheet_${unique_id}`;
const svelte_rules = `__svelte_rules_${unique_id}`; const svelte_rules = `__svelte_rules_${unique_id}`;
@ -37,8 +37,8 @@ export function create_rule(node: Element & ElementCSSInlineStyle, a: number, b:
const name = `__svelte_${hash(rule)}_${uid}`; const name = `__svelte_${hash(rule)}_${uid}`;
const doc = get_root_for_style(node) as ExtendedDoc; const doc = get_root_for_style(node) as ExtendedDoc;
active_docs.add(doc); active_docs.add(doc);
const stylesheet = doc[svelte_stylesheet] || (doc[svelte_stylesheet] = append_empty_stylesheet(node).sheet as CSSStyleSheet); const stylesheet: CSSStyleSheet = doc[svelte_stylesheet] || (doc[svelte_stylesheet] = append_empty_stylesheet(node).sheet as CSSStyleSheet);
const current_rules = doc[svelte_rules] || (doc[svelte_rules] = {}); const current_rules: Record<string, true> = doc[svelte_rules] || (doc[svelte_rules] = {});
if (!current_rules[name]) { if (!current_rules[name]) {
current_rules[name] = true; current_rules[name] = true;
@ -70,7 +70,7 @@ export function clear_rules() {
raf(() => { raf(() => {
if (active) return; if (active) return;
active_docs.forEach(doc => { active_docs.forEach(doc => {
const stylesheet = doc[svelte_stylesheet]; const stylesheet: CSSStyleSheet = doc[svelte_stylesheet];
let i = stylesheet.cssRules.length; let i = stylesheet.cssRules.length;
while (i--) stylesheet.deleteRule(i); while (i--) stylesheet.deleteRule(i);
doc[svelte_rules] = {}; doc[svelte_rules] = {};

Loading…
Cancel
Save