|
|
|
@ -130,8 +130,6 @@ export default class Selector {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
validate(component: Component) {
|
|
|
|
validate(component: Component) {
|
|
|
|
this.blocks.some((block) => block.validateGlobalCompoundSelector(component));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let start = 0;
|
|
|
|
let start = 0;
|
|
|
|
let end = this.blocks.length;
|
|
|
|
let end = this.blocks.length;
|
|
|
|
|
|
|
|
|
|
|
|
@ -150,6 +148,7 @@ export default class Selector {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.validate_global_with_multiple_selectors(component);
|
|
|
|
this.validate_global_with_multiple_selectors(component);
|
|
|
|
|
|
|
|
this.validate_global_compound_selector(component);
|
|
|
|
this.validate_invalid_combinator_without_selector(component);
|
|
|
|
this.validate_invalid_combinator_without_selector(component);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -181,6 +180,23 @@ export default class Selector {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
validate_global_compound_selector(component: Component) {
|
|
|
|
|
|
|
|
for (const block of this.blocks) {
|
|
|
|
|
|
|
|
for (let index = 0; index < block.selectors.length; index++) {
|
|
|
|
|
|
|
|
const selector = block.selectors[index];
|
|
|
|
|
|
|
|
if (selector.type === 'PseudoClassSelector' &&
|
|
|
|
|
|
|
|
selector.name === 'global' &&
|
|
|
|
|
|
|
|
index !== 0 &&
|
|
|
|
|
|
|
|
selector.children &&
|
|
|
|
|
|
|
|
selector.children.length > 0 &&
|
|
|
|
|
|
|
|
!/[.:#]/.test(selector.children[0].value)
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
component.error(selector, compiler_errors.css_invalid_global_selector_position);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
get_amount_class_specificity_increased() {
|
|
|
|
get_amount_class_specificity_increased() {
|
|
|
|
let count = 0;
|
|
|
|
let count = 0;
|
|
|
|
for (const block of this.blocks) {
|
|
|
|
for (const block of this.blocks) {
|
|
|
|
@ -640,24 +656,6 @@ class Block {
|
|
|
|
this.selectors.every((selector) => selector.type === 'PseudoClassSelector' || selector.type === 'PseudoElementSelector')
|
|
|
|
this.selectors.every((selector) => selector.type === 'PseudoClassSelector' || selector.type === 'PseudoElementSelector')
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
validateGlobalCompoundSelector(component: Component) {
|
|
|
|
|
|
|
|
this.selectors.some((selector, index) => {
|
|
|
|
|
|
|
|
if (selector.type === 'PseudoClassSelector' &&
|
|
|
|
|
|
|
|
selector.name === 'global' &&
|
|
|
|
|
|
|
|
index !== 0 &&
|
|
|
|
|
|
|
|
selector.children &&
|
|
|
|
|
|
|
|
selector.children.length > 0 &&
|
|
|
|
|
|
|
|
selector.children[0].value[0] !== '.'
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
component.error(selector, {
|
|
|
|
|
|
|
|
code: 'css-invalid-global',
|
|
|
|
|
|
|
|
message: ':global(...) which not at the start of selector sequence should not contain type or universal selector'
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function group_selectors(selector: CssNode) {
|
|
|
|
function group_selectors(selector: CssNode) {
|
|
|
|
|