// importing plugin globally @plugin "./plugin/plugin-global"; // transitively include plugins from importing another sheet @import "./plugin/plugin-transitive"; // `test-global` function should be reachable // `test-local` function should not be reachable // `test-shadow` function should return global version .class { trans : test-transitive(); global : test-global(); local : test-local(); shadow : test-shadow(); // `test-global` function should propagate and be reachable // `test-local` function should be reachable // `test-shadow` function should return local version, shadowing global version .local { @plugin "./plugin/plugin-local"; global : test-global(); local : test-local(); shadow : test-shadow(); } } // calling a mixin or detached ruleset should not bubble local plugins // imported inside either into the parent scope. .mixin() { @plugin "./plugin/plugin-local"; mixin-local : test-local(); mixin-global : test-global(); mixin-shadow : test-shadow(); } @ruleset : { @plugin "./plugin/plugin-local"; ruleset-local : test-local(); ruleset-global : test-global(); ruleset-shadow : test-shadow(); }; #ns { @plugin "./plugin/plugin-local"; .mixin() { ns-mixin-global : test-global(); ns-mixin-local : test-local(); ns-mixin-shadow : test-shadow(); } } .class { #ns > .mixin(); .mixin(); @ruleset(); class-local : test-local(); } // `test-global` function should propagate into directive scope @media screen { .test { result : test-global(); } } @font-face { result : test-global(); } // `test-global` function should propagate into nested directive scopes @media screen and (min-width:100px) { @media (max-width:400px) { .test { result : test-global(); } } } .test { @media screen { @plugin "./plugin/plugin-local"; result : test-local(); } }