Merge pull request #1190 from sveltejs/gh-1118

Use classes for style encapsulation, rather than attributes
pull/1220/head
Rich Harris 8 years ago committed by GitHub
commit 46c9ad4221
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -69,7 +69,7 @@ class Rule {
transform(code: MagicString, id: string, keyframes: Map<string, string>, cascade: boolean) { transform(code: MagicString, id: string, keyframes: Map<string, string>, cascade: boolean) {
if (this.parent && this.parent.node.type === 'Atrule' && this.parent.node.name === 'keyframes') return true; if (this.parent && this.parent.node.type === 'Atrule' && this.parent.node.name === 'keyframes') return true;
const attr = `[${id}]`; const attr = `.${id}`;
if (cascade) { if (cascade) {
this.selectors.forEach(selector => { this.selectors.forEach(selector => {

@ -135,14 +135,6 @@ export default function dom(
builder.addBlock(generator.javascript); builder.addBlock(generator.javascript);
} }
if (generator.needsEncapsulateHelper) {
builder.addBlock(deindent`
function @encapsulateStyles(node) {
@setAttribute(node, "${generator.stylesheet.id}", "");
}
`);
}
const { css, cssMap } = generator.stylesheet.render(options.filename, !generator.customElement); const { css, cssMap } = generator.stylesheet.render(options.filename, !generator.customElement);
const styles = generator.stylesheet.hasStyles && stringify(options.dev ? const styles = generator.stylesheet.hasStyles && stringify(options.dev ?
`${css}\n/*# sourceMappingURL=${cssMap.toUrl()} */` : `${css}\n/*# sourceMappingURL=${cssMap.toUrl()} */` :

@ -141,6 +141,10 @@ export default class Attribute {
shouldCache = true; shouldCache = true;
} }
if (node._needsCssAttribute && propertyName === 'className') {
value = `(${value}) + " ${this.generator.stylesheet.id}"`;
}
const isSelectValueAttribute = const isSelectValueAttribute =
name === 'value' && node.name === 'select'; name === 'value' && node.name === 'select';
@ -191,17 +195,17 @@ export default class Attribute {
block.builders.hydrate.addLine( block.builders.hydrate.addLine(
`${node.var}.${propertyName} = ${init};` `${node.var}.${propertyName} = ${init};`
); );
updater = `${node.var}.${propertyName} = ${shouldCache || isSelectValueAttribute ? last : value};`; updater = `${node.var}.${propertyName} = ${shouldCache ? last : value};`;
} else if (isDataSet) { } else if (isDataSet) {
block.builders.hydrate.addLine( block.builders.hydrate.addLine(
`${node.var}.dataset.${camelCaseName} = ${init};` `${node.var}.dataset.${camelCaseName} = ${init};`
); );
updater = `${node.var}.dataset.${camelCaseName} = ${shouldCache || isSelectValueAttribute ? last : value};`; updater = `${node.var}.dataset.${camelCaseName} = ${shouldCache ? last : value};`;
} else { } else {
block.builders.hydrate.addLine( block.builders.hydrate.addLine(
`${method}(${node.var}, "${name}", ${init});` `${method}(${node.var}, "${name}", ${init});`
); );
updater = `${method}(${node.var}, "${name}", ${shouldCache || isSelectValueAttribute ? last : value});`; updater = `${method}(${node.var}, "${name}", ${shouldCache ? last : value});`;
} }
if (allDependencies.size || hasChangeableIndex || isSelectValueAttribute) { if (allDependencies.size || hasChangeableIndex || isSelectValueAttribute) {
@ -223,17 +227,30 @@ export default class Attribute {
); );
} }
} else { } else {
const value = this.value === true const isScopedClassAttribute = (
? 'true' propertyName === 'className' &&
: this.value.length === 0 this.parent._needsCssAttribute &&
? `''` !this.generator.customElement
: stringify(this.value[0].data); );
const value = isScopedClassAttribute && this.value !== true
? this.value.length === 0
? `'${this.generator.stylesheet.id}'`
: stringify(this.value[0].data.concat(` ${this.generator.stylesheet.id}`))
: this.value === true
? 'true'
: this.value.length === 0
? `''`
: stringify(this.value[0].data);
const statement = ( const statement = (
isLegacyInputType ? `@setInputType(${node.var}, ${value});` : isLegacyInputType
propertyName ? `${node.var}.${propertyName} = ${value};` : ? `@setInputType(${node.var}, ${value});`
isDataSet ? `${node.var}.dataset.${camelCaseName} = ${value};` : : propertyName
`${method}(${node.var}, "${name}", ${value});` ? `${node.var}.${propertyName} = ${value};`
: isDataSet
? `${node.var}.dataset.${camelCaseName} = ${value};`
: `${method}(${node.var}, "${name}", ${value});`
); );
block.builders.hydrate.addLine(statement); block.builders.hydrate.addLine(statement);

@ -214,11 +214,13 @@ export default class Element extends Node {
// add CSS encapsulation attribute // add CSS encapsulation attribute
if (this._needsCssAttribute && !this.generator.customElement) { if (this._needsCssAttribute && !this.generator.customElement) {
this.generator.needsEncapsulateHelper = true; if (!this.attributes.find(a => a.type === 'Attribute' && a.name === 'class')) {
block.builders.hydrate.addLine( block.builders.hydrate.addLine(
`@encapsulateStyles(${name});` `${name}.className = "${this.generator.stylesheet.id}";`
); );
}
// TODO move this into a class as well?
if (this._cssRefAttribute) { if (this._cssRefAttribute) {
block.builders.hydrate.addLine( block.builders.hydrate.addLine(
`@setAttribute(${name}, "svelte-ref-${this._cssRefAttribute}", "");` `@setAttribute(${name}, "svelte-ref-${this._cssRefAttribute}", "");`
@ -429,18 +431,22 @@ export default class Element extends Node {
let open = `<${node.name}`; let open = `<${node.name}`;
if (node._needsCssAttribute) {
open += ` ${generator.stylesheet.id}`;
}
if (node._cssRefAttribute) { if (node._cssRefAttribute) {
open += ` svelte-ref-${node._cssRefAttribute}`; open += ` svelte-ref-${node._cssRefAttribute}`;
} }
node.attributes.forEach((attr: Node) => { node.attributes.forEach((attr: Node) => {
open += ` ${fixAttributeCasing(attr.name)}${stringifyAttributeValue(attr.value)}` const value = node._needsCssAttribute && attr.name === 'class'
? attr.value.concat({ type: 'Text', data: ` ${generator.stylesheet.id}` })
: attr.value;
open += ` ${fixAttributeCasing(attr.name)}${stringifyAttributeValue(value)}`
}); });
if (node._needsCssAttribute && !node.attributes.find(a => a.name === 'class')) {
open += ` class="${generator.stylesheet.id}"`;
}
if (isVoidElementName(node.name)) return open + '>'; if (isVoidElementName(node.name)) return open + '>';
return `${open}>${node.children.map(toHTML).join('')}</${node.name}>`; return `${open}>${node.children.map(toHTML).join('')}</${node.name}>`;

@ -50,13 +50,22 @@ export default function visitElement(
block.contextualise(attribute.value[0].expression); block.contextualise(attribute.value[0].expression);
openingTag += '${' + attribute.value[0].metadata.snippet + ' ? " ' + attribute.name + '" : "" }'; openingTag += '${' + attribute.value[0].metadata.snippet + ' ? " ' + attribute.name + '" : "" }';
} else { } else {
openingTag += ` ${attribute.name}="${stringifyAttributeValue(block, attribute.value)}"`; const value = attribute.name === 'class' && node._needsCssAttribute
? attribute.value.concat({
type: 'Text',
data: ` ${generator.stylesheet.id}`
})
: attribute.value;
openingTag += ` ${attribute.name}="${stringifyAttributeValue(block, value)}"`;
} }
}); });
if (node._needsCssAttribute) { if (node._needsCssAttribute && !node.attributes.find(a => a.type === 'Attribute' && a.name === 'class')) {
openingTag += ` ${generator.stylesheet.id}`; openingTag += ` class="${generator.stylesheet.id}"`;
}
if (node._needsCssAttribute) {
if (node._cssRefAttribute) { if (node._cssRefAttribute) {
openingTag += ` svelte-ref-${node._cssRefAttribute}`; openingTag += ` svelte-ref-${node._cssRefAttribute}`;
} }

@ -1,8 +1,8 @@
// https://github.com/darkskyapp/string-hash/blob/master/index.js // https://github.com/darkskyapp/string-hash/blob/master/index.js
export default function hash(str: string): number { export default function hash(str: string): string {
let hash = 5381; let hash = 5381;
let i = str.length; let i = str.length;
while (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i); while (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);
return hash >>> 0; return (hash >>> 0).toString(36);
} }

@ -95,7 +95,7 @@ describe('css', () => {
css: read(`test/css/samples/${dir}/expected.css`) css: read(`test/css/samples/${dir}/expected.css`)
}; };
assert.equal(dom.css.replace(/svelte-\d+/g, 'svelte-xyz'), expected.css); assert.equal(dom.css.replace(/svelte(-ref)?-[a-z0-9]+/g, (m, $1) => $1 ? m : 'svelte-xyz'), expected.css);
// verify that the right elements have scoping selectors // verify that the right elements have scoping selectors
if (expected.html !== null) { if (expected.html !== null) {
@ -114,7 +114,7 @@ describe('css', () => {
fs.writeFileSync(`test/css/samples/${dir}/_actual.html`, html); fs.writeFileSync(`test/css/samples/${dir}/_actual.html`, html);
assert.equal( assert.equal(
normalizeHtml(window, html.replace(/svelte-\d+/g, 'svelte-xyz')), normalizeHtml(window, html.replace(/svelte(-ref)?-[a-z0-9]+/g, (m, $1) => $1 ? m : 'svelte-xyz')),
normalizeHtml(window, expected.html) normalizeHtml(window, expected.html)
); );
@ -133,7 +133,7 @@ describe('css', () => {
assert.equal( assert.equal(
normalizeHtml( normalizeHtml(
window, window,
component.render(config.data).html.replace(/svelte-\d+/g, 'svelte-xyz') component.render(config.data).html.replace(/svelte(-ref)?-[a-z0-9]+/g, (m, $1) => $1 ? m : 'svelte-xyz')
), ),
normalizeHtml(window, expected.html) normalizeHtml(window, expected.html)
); );

@ -1 +1 @@
[foo][svelte-xyz]{color:red}[baz][svelte-xyz]{color:blue} [foo].svelte-xyz{color:red}[baz].svelte-xyz{color:blue}

@ -1 +1 @@
[foo=bar][svelte-xyz]{color:red} [foo=bar].svelte-xyz{color:red}

@ -1 +1 @@
div[svelte-xyz],[svelte-xyz] div{color:red} div.svelte-xyz,.svelte-xyz div{color:red}

@ -1 +1 @@
@keyframes why{0%{color:red}100%{color:blue}}.animated[svelte-xyz]{animation:why 2s}.also-animated[svelte-xyz]{animation:not-defined-here 2s} @keyframes why{0%{color:red}100%{color:blue}}.animated.svelte-xyz{animation:why 2s}.also-animated.svelte-xyz{animation:not-defined-here 2s}

@ -1 +1 @@
@keyframes svelte-xyz-why{from{color:red}to{color:blue}}.animated[svelte-xyz]{animation:svelte-xyz-why 2s} @keyframes svelte-xyz-why{from{color:red}to{color:blue}}.animated.svelte-xyz{animation:svelte-xyz-why 2s}

@ -1 +1 @@
@keyframes svelte-xyz-why{0%{color:red}100%{color:blue}}.animated[svelte-xyz]{animation:svelte-xyz-why 2s}.also-animated[svelte-xyz]{animation:not-defined-here 2s} @keyframes svelte-xyz-why{0%{color:red}100%{color:blue}}.animated.svelte-xyz{animation:svelte-xyz-why 2s}.also-animated.svelte-xyz{animation:not-defined-here 2s}

@ -1 +1 @@
span[svelte-xyz]::after{content:'i am a pseudo-element'}span[svelte-xyz]:first-child{color:red}span[svelte-xyz]:last-child::after{color:blue} span.svelte-xyz::after{content:'i am a pseudo-element'}span.svelte-xyz:first-child{color:red}span.svelte-xyz:last-child::after{color:blue}

@ -1 +1 @@
[svelte-xyz]{color:red} .svelte-xyz{color:red}

@ -1 +1 @@
<div svelte-xyz=""></div> <div class="svelte-xyz"></div>

@ -1 +1 @@
div[svelte-xyz]{color:red}div.foo[svelte-xyz]{color:blue}.foo[svelte-xyz]{font-weight:bold} div.svelte-xyz{color:red}div.foo.svelte-xyz{color:blue}.foo.svelte-xyz{font-weight:bold}

@ -1 +1 @@
.test[svelte-xyz]>div[svelte-xyz]{color:#0af} .test.svelte-xyz>div.svelte-xyz{color:#0af}

@ -1 +1 @@
<div svelte-xyz="" class="test"><div svelte-xyz="">Testing...</div></div> <div class="test svelte-xyz"><div class="svelte-xyz">Testing...</div></div>

@ -1 +1 @@
div[svelte-xyz],[svelte-xyz] div{--test:10} div.svelte-xyz,.svelte-xyz div{--test:10}

@ -1 +1 @@
p[svelte-xyz] span[svelte-xyz]{color:red} p.svelte-xyz span.svelte-xyz{color:red}

@ -1 +1 @@
<div><p svelte-xyz=''><span svelte-xyz=''>styled</span></p></div> <div><p class="svelte-xyz"><span class="svelte-xyz">styled</span></p></div>

@ -1 +1 @@
@keyframes svelte-xyz-why{0%{color:red}100%{color:blue}}[svelte-xyz].animated,[svelte-xyz] .animated{animation:svelte-xyz-why 2s} @keyframes svelte-xyz-why{0%{color:red}100%{color:blue}}.svelte-xyz.animated,.svelte-xyz .animated{animation:svelte-xyz-why 2s}

@ -1 +1 @@
@media only screen and (min-width: 400px){div[svelte-xyz],[svelte-xyz] div{color:red}} @media only screen and (min-width: 400px){div.svelte-xyz,.svelte-xyz div{color:red}}

@ -1 +1 @@
@media(min-width: 400px){[svelte-xyz].large-screen,[svelte-xyz] .large-screen{display:block}} @media(min-width: 400px){.svelte-xyz.large-screen,.svelte-xyz .large-screen{display:block}}

@ -1 +1 @@
[data-foo*='bar'][svelte-xyz]{color:red} [data-foo*='bar'].svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div><p svelte-xyz="" data-foo="foobarbaz">this is styled</p> <div><p class="svelte-xyz" data-foo="foobarbaz">this is styled</p>
<p data-foo="fooBARbaz">this is unstyled</p></div> <p data-foo="fooBARbaz">this is unstyled</p></div>

@ -1 +1 @@
[data-foo='bar' i][svelte-xyz]{color:red} [data-foo='bar' i].svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div><p svelte-xyz="" data-foo="BAR">this is styled</p> <div><p class="svelte-xyz" data-foo="BAR">this is styled</p>
<p data-foo="BAZ">this is unstyled</p></div> <p data-foo="BAZ">this is unstyled</p></div>

@ -1 +1 @@
[data-foo='bar'][svelte-xyz]{color:red} [data-foo='bar'].svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div><p svelte-xyz="" data-foo="whatever">this is styled</p> <div><p class="svelte-xyz" data-foo="whatever">this is styled</p>
<p data-foo="baz">this is unstyled</p></div> <p data-foo="baz">this is unstyled</p></div>

@ -1 +1 @@
[data-foo='bar'][svelte-xyz]{color:red} [data-foo='bar'].svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div><p svelte-xyz="" data-foo="bar">this is styled</p> <div><p class="svelte-xyz" data-foo="bar">this is styled</p>
<p data-foo="baz">this is unstyled</p></div> <p data-foo="baz">this is unstyled</p></div>

@ -1 +1 @@
[data-foo|='bar'][svelte-xyz]{color:red} [data-foo|='bar'].svelte-xyz{color:red}

@ -1,3 +1,3 @@
<div><p svelte-xyz="" data-foo="bar">this is styled</p> <div><p class="svelte-xyz" data-foo="bar">this is styled</p>
<p svelte-xyz="" data-foo="bar-baz">this is styled</p> <p class="svelte-xyz" data-foo="bar-baz">this is styled</p>
<p data-foo="baz-bar">this is unstyled</p></div> <p data-foo="baz-bar">this is unstyled</p></div>

@ -1 +1 @@
[data-foo^='bar'][svelte-xyz]{color:red} [data-foo^='bar'].svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div><p svelte-xyz="" data-foo="barbaz">this is styled</p> <div><p class="svelte-xyz" data-foo="barbaz">this is styled</p>
<p data-foo="bazbar">this is unstyled</p></div> <p data-foo="bazbar">this is unstyled</p></div>

@ -1 +1 @@
[data-foo$='bar'][svelte-xyz]{color:red} [data-foo$='bar'].svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div><p data-foo="barbaz">this is unstyled</p> <div><p data-foo="barbaz">this is unstyled</p>
<p svelte-xyz="" data-foo="bazbar">this is styled</p></div> <p class="svelte-xyz" data-foo="bazbar">this is styled</p></div>

@ -1 +1 @@
[data-foo~='bar'][svelte-xyz]{color:red} [data-foo~='bar'].svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div><p svelte-xyz="" data-foo="qux bar">this is styled</p> <div><p class="svelte-xyz" data-foo="qux bar">this is styled</p>
<p data-foo="qux baz">this is unstyled</p></div> <p data-foo="qux baz">this is unstyled</p></div>

@ -1 +1 @@
[autoplay][svelte-xyz]{color:red} [autoplay].svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div><video svelte-xyz autoplay></video> <div><video class="svelte-xyz" autoplay></video>
<video></video></div> <video></video></div>

@ -1 +1 @@
.foo[svelte-xyz]{color:red} .foo.svelte-xyz{color:red}

@ -1,2 +1,2 @@
<p svelte-xyz="" class="whatever">this is styled</p> <p class="whatever svelte-xyz">this is styled</p>
<p class="bar">this is unstyled</p> <p class="bar">this is unstyled</p>

@ -1 +1 @@
.foo[svelte-xyz]{color:red} .foo.svelte-xyz{color:red}

@ -1,2 +1,2 @@
<p svelte-xyz="" class="foo">this is styled</p> <p class="foo svelte-xyz">this is styled</p>
<p class="bar">this is unstyled</p> <p class="bar">this is unstyled</p>

@ -1 +1 @@
.foo[svelte-xyz] .bar{color:red} .foo.svelte-xyz .bar{color:red}

@ -1 +1 @@
<div svelte-xyz="" class="foo"></div> <div class="foo svelte-xyz"></div>

@ -1 +1 @@
div[svelte-xyz]>p>em{color:red} div.svelte-xyz>p>em{color:red}

@ -1 +1 @@
<div svelte-xyz=""></div> <div class="svelte-xyz"></div>

@ -1 +1 @@
div[svelte-xyz]>p{color:red} div.svelte-xyz>p{color:red}

@ -1 +1 @@
<div svelte-xyz=""></div> <div class="svelte-xyz"></div>

@ -1 +1 @@
div>section>p[svelte-xyz]{color:red} div>section>p.svelte-xyz{color:red}

@ -1 +1 @@
<p svelte-xyz="">this may or may not be styled</p> <p class="svelte-xyz">this may or may not be styled</p>

@ -1 +1 @@
div>p[svelte-xyz]{color:red} div>p.svelte-xyz{color:red}

@ -1 +1 @@
<p svelte-xyz="">this may or may not be styled</p> <p class="svelte-xyz">this may or may not be styled</p>

@ -1 +1 @@
#foo[svelte-xyz]{color:red} #foo.svelte-xyz{color:red}

@ -1,2 +1,2 @@
<div svelte-xyz="" id="foo"></div> <div class="svelte-xyz" id="foo"></div>
<div id="bar"></div> <div id="bar"></div>

@ -1 +1 @@
div[svelte-xyz] section p[svelte-xyz]{color:red} div.svelte-xyz section p.svelte-xyz{color:red}

@ -1 +1 @@
<div svelte-xyz=""><section><p svelte-xyz="">this is styled</p></section></div> <div class="svelte-xyz"><section><p class="svelte-xyz">this is styled</p></section></div>

@ -1 +1 @@
div[svelte-xyz] p[svelte-xyz]{color:red} div.svelte-xyz p.svelte-xyz{color:red}

@ -1 +1 @@
<div svelte-xyz=""><section><p svelte-xyz="">this is styled</p></section></div> <div class="svelte-xyz"><section><p class="svelte-xyz">this is styled</p></section></div>

@ -1 +1 @@
p[svelte-xyz]{color:red} p.svelte-xyz{color:red}

@ -1 +1 @@
<div><p svelte-xyz="">this is styled</p></div> <div><p class="svelte-xyz">this is styled</p></div>

@ -1 +1 @@
[svelte-ref-button].active[svelte-xyz]{color:red} [svelte-ref-button].active.svelte-xyz{color:red}

@ -1 +1 @@
<button class="active" svelte-ref-button="" svelte-xyz="">deactivate</button> <button svelte-ref-button="" class="active svelte-xyz">deactivate</button>

@ -1 +1 @@
[svelte-ref-a][svelte-xyz]{color:red}[svelte-ref-b][svelte-xyz]{color:green} [svelte-ref-a].svelte-xyz{color:red}[svelte-ref-b].svelte-xyz{color:green}

@ -1,3 +1,3 @@
<div svelte-xyz='' svelte-ref-a=''></div> <div class="svelte-xyz" svelte-ref-a=''></div>
<div svelte-xyz='' svelte-ref-b=''></div> <div class="svelte-xyz" svelte-ref-b=''></div>
<div></div> <div></div>

@ -1 +1 @@
@supports (display: grid){.maybe-grid[svelte-xyz]{display:grid}} @supports (display: grid){.maybe-grid.svelte-xyz{display:grid}}

@ -1 +1 @@
[svelte-xyz],[svelte-xyz] *{color:red} .svelte-xyz,.svelte-xyz *{color:red}

@ -1 +1 @@
div[svelte-xyz],[svelte-xyz] div{@apply --funky-div;} div.svelte-xyz,.svelte-xyz div{@apply --funky-div;}

@ -1 +1 @@
.bar[svelte-xyz]{color:red} .bar.svelte-xyz{color:red}

@ -1 +1 @@
<div svelte-xyz="" class="bar"></div> <div class="bar svelte-xyz"></div>

@ -1 +1 @@
.active[svelte-xyz]{color:red}.inactive[svelte-xyz]{color:blue} .active.svelte-xyz{color:red}.inactive.svelte-xyz{color:blue}

@ -1 +1 @@
<div svelte-xyz="" class="active"></div> <div class="active svelte-xyz"></div>

@ -1 +1 @@
.foo[svelte-xyz]{color:red} .foo.svelte-xyz{color:red}

@ -1 +1 @@
<div svelte-xyz="" class="foo"></div> <div class="foo svelte-xyz"></div>

@ -33,10 +33,6 @@ function createText(data) {
return document.createTextNode(data); return document.createTextNode(data);
} }
function setAttribute(node, attribute, value) {
node.setAttribute(attribute, value);
}
function blankObject() { function blankObject() {
return Object.create(null); return Object.create(null);
} }
@ -198,14 +194,10 @@ var proto = {
function data() { function data() {
return { foo: 42 } return { foo: 42 }
} }
function encapsulateStyles(node) {
setAttribute(node, "svelte-2794052100", "");
}
function add_css() { function add_css() {
var style = createElement("style"); var style = createElement("style");
style.id = 'svelte-2794052100-style'; style.id = 'svelte-1a7i8ec-style';
style.textContent = "p[svelte-2794052100],[svelte-2794052100] p{color:red}"; style.textContent = "p.svelte-1a7i8ec,.svelte-1a7i8ec p{color:red}";
appendNode(style, document.head); appendNode(style, document.head);
} }
@ -220,7 +212,7 @@ function create_main_fragment(component, state) {
}, },
h: function hydrate() { h: function hydrate() {
encapsulateStyles(p); p.className = "svelte-1a7i8ec";
}, },
m: function mount(target, anchor) { m: function mount(target, anchor) {
@ -246,7 +238,7 @@ function SvelteComponent(options) {
init(this, options); init(this, options);
this._state = assign(data(), options.data); this._state = assign(data(), options.data);
if (!document.getElementById("svelte-2794052100-style")) add_css(); if (!document.getElementById("svelte-1a7i8ec-style")) add_css();
this._fragment = create_main_fragment(this, this._state); this._fragment = create_main_fragment(this, this._state);

@ -1,18 +1,14 @@
/* generated by Svelte vX.Y.Z */ /* generated by Svelte vX.Y.Z */
import { appendNode, assign, createElement, createText, detachNode, init, insertNode, noop, proto, setAttribute } from "svelte/shared.js"; import { appendNode, assign, createElement, createText, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
function data() { function data() {
return { foo: 42 } return { foo: 42 }
}; };
function encapsulateStyles(node) {
setAttribute(node, "svelte-2794052100", "");
}
function add_css() { function add_css() {
var style = createElement("style"); var style = createElement("style");
style.id = 'svelte-2794052100-style'; style.id = 'svelte-1a7i8ec-style';
style.textContent = "p[svelte-2794052100],[svelte-2794052100] p{color:red}"; style.textContent = "p.svelte-1a7i8ec,.svelte-1a7i8ec p{color:red}";
appendNode(style, document.head); appendNode(style, document.head);
} }
@ -27,7 +23,7 @@ function create_main_fragment(component, state) {
}, },
h: function hydrate() { h: function hydrate() {
encapsulateStyles(p); p.className = "svelte-1a7i8ec";
}, },
m: function mount(target, anchor) { m: function mount(target, anchor) {
@ -53,7 +49,7 @@ function SvelteComponent(options) {
init(this, options); init(this, options);
this._state = assign(data(), options.data); this._state = assign(data(), options.data);
if (!document.getElementById("svelte-2794052100-style")) add_css(); if (!document.getElementById("svelte-1a7i8ec-style")) add_css();
this._fragment = create_main_fragment(this, this._state); this._fragment = create_main_fragment(this, this._state);

@ -29,10 +29,6 @@ function createElement(name) {
return document.createElement(name); return document.createElement(name);
} }
function setAttribute(node, attribute, value) {
node.setAttribute(attribute, value);
}
function blankObject() { function blankObject() {
return Object.create(null); return Object.create(null);
} }
@ -191,14 +187,10 @@ var proto = {
/* generated by Svelte vX.Y.Z */ /* generated by Svelte vX.Y.Z */
function encapsulateStyles(node) {
setAttribute(node, "svelte-3905933315", "");
}
function add_css() { function add_css() {
var style = createElement("style"); var style = createElement("style");
style.id = 'svelte-3905933315-style'; style.id = 'svelte-1slhpfn-style';
style.textContent = "@media(min-width: 1px){div[svelte-3905933315],[svelte-3905933315] div{color:red}}"; style.textContent = "@media(min-width: 1px){div.svelte-1slhpfn,.svelte-1slhpfn div{color:red}}";
appendNode(style, document.head); appendNode(style, document.head);
} }
@ -212,7 +204,7 @@ function create_main_fragment(component, state) {
}, },
h: function hydrate() { h: function hydrate() {
encapsulateStyles(div); div.className = "svelte-1slhpfn";
}, },
m: function mount(target, anchor) { m: function mount(target, anchor) {
@ -233,7 +225,7 @@ function SvelteComponent(options) {
init(this, options); init(this, options);
this._state = assign({}, options.data); this._state = assign({}, options.data);
if (!document.getElementById("svelte-3905933315-style")) add_css(); if (!document.getElementById("svelte-1slhpfn-style")) add_css();
this._fragment = create_main_fragment(this, this._state); this._fragment = create_main_fragment(this, this._state);

@ -1,14 +1,10 @@
/* generated by Svelte vX.Y.Z */ /* generated by Svelte vX.Y.Z */
import { appendNode, assign, createElement, detachNode, init, insertNode, noop, proto, setAttribute } from "svelte/shared.js"; import { appendNode, assign, createElement, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
function encapsulateStyles(node) {
setAttribute(node, "svelte-3905933315", "");
}
function add_css() { function add_css() {
var style = createElement("style"); var style = createElement("style");
style.id = 'svelte-3905933315-style'; style.id = 'svelte-1slhpfn-style';
style.textContent = "@media(min-width: 1px){div[svelte-3905933315],[svelte-3905933315] div{color:red}}"; style.textContent = "@media(min-width: 1px){div.svelte-1slhpfn,.svelte-1slhpfn div{color:red}}";
appendNode(style, document.head); appendNode(style, document.head);
} }
@ -22,7 +18,7 @@ function create_main_fragment(component, state) {
}, },
h: function hydrate() { h: function hydrate() {
encapsulateStyles(div); div.className = "svelte-1slhpfn";
}, },
m: function mount(target, anchor) { m: function mount(target, anchor) {
@ -43,7 +39,7 @@ function SvelteComponent(options) {
init(this, options); init(this, options);
this._state = assign({}, options.data); this._state = assign({}, options.data);
if (!document.getElementById("svelte-3905933315-style")) add_css(); if (!document.getElementById("svelte-1slhpfn-style")) add_css();
this._fragment = create_main_fragment(this, this._state); this._fragment = create_main_fragment(this, this._state);

@ -1,2 +1,2 @@
div[svelte-724714405],[svelte-724714405] div{color:red} div.svelte-bzh57p,.svelte-bzh57p div{color:red}
div[svelte-300476157],[svelte-300476157] div{color:green} div.svelte-4yw8vx,.svelte-4yw8vx div{color:green}

@ -1,8 +1,8 @@
<div svelte-724714405>red</div> <div class="svelte-bzh57p">red</div>
<div svelte-300476157>green: foo</div> <div class="svelte-4yw8vx">green: foo</div>
<div svelte-300476157>green: bar</div> <div class="svelte-4yw8vx">green: bar</div>

@ -1,2 +1,2 @@
div[svelte-724714405],[svelte-724714405] div{color:red} div.svelte-bzh57p,.svelte-bzh57p div{color:red}
div[svelte-300476157],[svelte-300476157] div{color:green} div.svelte-4yw8vx,.svelte-4yw8vx div{color:green}

@ -1,8 +1,8 @@
<div svelte-724714405>red</div> <div class="svelte-bzh57p">red</div>
<div svelte-300476157>green: foo</div> <div class="svelte-4yw8vx">green: foo</div>
<div svelte-300476157>green: bar</div> <div class="svelte-4yw8vx">green: bar</div>

@ -1 +1 @@
div[svelte-724714405],[svelte-724714405] div{color:red} div.svelte-bzh57p,.svelte-bzh57p div{color:red}

@ -1 +1 @@
<div svelte-724714405>red</div> <div class="svelte-bzh57p">red</div>

@ -1 +1 @@
div[svelte-724714405],[svelte-724714405] div{color:red} div.svelte-bzh57p,.svelte-bzh57p div{color:red}

@ -1 +1 @@
<div svelte-724714405>red</div> <div class="svelte-bzh57p">red</div>

@ -1,2 +1,2 @@
.foo[svelte-1719932608]{color:red} .foo.svelte-sg04hs{color:red}
/*# sourceMappingURL=output.css.map */ /*# sourceMappingURL=output.css.map */

@ -8,5 +8,5 @@
"<p class='foo'>red</p>\n\n<style>\n\t.foo {\n\t\tcolor: red;\n\t}\n</style>" "<p class='foo'>red</p>\n\n<style>\n\t.foo {\n\t\tcolor: red;\n\t}\n</style>"
], ],
"names": [], "names": [],
"mappings": "AAGC,IAAI,mBAAC,CAAC,AACL,KAAK,CAAE,GAAG,AACX,CAAC" "mappings": "AAGC,IAAI,cAAC,CAAC,AACL,KAAK,CAAE,GAAG,AACX,CAAC"
} }

@ -1,2 +1,2 @@
[svelte-1719932608].foo,[svelte-1719932608] .foo{color:red} .svelte-sg04hs.foo,.svelte-sg04hs .foo{color:red}
/*# sourceMappingURL=output.css.map */ /*# sourceMappingURL=output.css.map */

@ -8,5 +8,5 @@
"<p class='foo'>red</p>\n\n<style>\n\t.foo {\n\t\tcolor: red;\n\t}\n</style>" "<p class='foo'>red</p>\n\n<style>\n\t.foo {\n\t\tcolor: red;\n\t}\n</style>"
], ],
"names": [], "names": [],
"mappings": "AAGC,gDAAK,CAAC,AACL,KAAK,CAAE,GAAG,AACX,CAAC" "mappings": "AAGC,sCAAK,CAAC,AACL,KAAK,CAAE,GAAG,AACX,CAAC"
} }
Loading…
Cancel
Save