@@ -36,66 +36,25 @@ if ( selectors.length === 0 ) { return; }
3636
3737proceduralImports . length = 0 ;
3838
39+ if ( self . ProceduralFiltererAPI === undefined ) {
40+ self . ProceduralFiltererAPI = chrome . runtime . sendMessage ( {
41+ what : 'injectCSSProceduralAPI'
42+ } ) . catch ( ( ) => {
43+ } ) ;
44+ }
45+
46+ await self . ProceduralFiltererAPI ;
47+
48+ self . listsProceduralFiltererAPI = new self . ProceduralFiltererAPI ( ) ;
49+
3950const declaratives = selectors . filter ( a => a . cssable ) ;
4051if ( declaratives . length !== 0 ) {
41- const cssRuleFromProcedural = details => {
42- const { tasks, action } = details ;
43- let mq , selector ;
44- if ( Array . isArray ( tasks ) ) {
45- if ( tasks [ 0 ] [ 0 ] !== 'matches-media' ) { return ; }
46- mq = tasks [ 0 ] [ 1 ] ;
47- if ( tasks . length > 2 ) { return ; }
48- if ( tasks . length === 2 ) {
49- if ( tasks [ 1 ] [ 0 ] !== 'spath' ) { return ; }
50- selector = tasks [ 1 ] [ 1 ] ;
51- }
52- }
53- let style ;
54- if ( Array . isArray ( action ) ) {
55- if ( action [ 0 ] !== 'style' ) { return ; }
56- selector = selector || details . selector ;
57- style = action [ 1 ] ;
58- }
59- if ( mq === undefined && style === undefined && selector === undefined ) { return ; }
60- if ( mq === undefined ) {
61- return `${ selector } \n{${ style } }` ;
62- }
63- if ( style === undefined ) {
64- return `@media ${ mq } {\n${ selector } \n{display:none!important;}\n}` ;
65- }
66- return `@media ${ mq } {\n${ selector } \n{${ style } }\n}` ;
67- } ;
68- const sheetText = [ ] ;
69- for ( const details of declaratives ) {
70- const ruleText = cssRuleFromProcedural ( details ) ;
71- if ( ruleText === undefined ) { continue ; }
72- sheetText . push ( ruleText ) ;
73- }
74- if ( sheetText . length !== 0 ) {
75- self . cssAPI . insert ( sheetText . join ( '\n' ) ) ;
76- }
52+ self . listsProceduralFiltererAPI . addDeclaratives ( declaratives ) ;
7753}
7854
79- const procedurals = selectors . filter ( a => a . cssable === undefined ) ;
55+ const procedurals = selectors . filter ( a => ! a . cssable ) ;
8056if ( procedurals . length !== 0 ) {
81- const addSelectors = selectors => {
82- if ( self . listsProceduralFiltererAPI instanceof Object === false ) { return ; }
83- self . listsProceduralFiltererAPI . addSelectors ( selectors ) ;
84- } ;
85- if ( self . ProceduralFiltererAPI === undefined ) {
86- self . ProceduralFiltererAPI = chrome . runtime . sendMessage ( {
87- what : 'injectCSSProceduralAPI'
88- } ) . catch ( ( ) => {
89- } ) ;
90- }
91- if ( self . ProceduralFiltererAPI instanceof Promise ) {
92- self . ProceduralFiltererAPI . then ( ( ) => {
93- self . listsProceduralFiltererAPI = new self . ProceduralFiltererAPI ( ) ;
94- addSelectors ( procedurals ) ;
95- } ) ;
96- } else {
97- addSelectors ( procedurals ) ;
98- }
57+ self . listsProceduralFiltererAPI . addProcedurals ( procedurals ) ;
9958}
10059
10160/******************************************************************************/
0 commit comments