1- import postcss from 'postcss' ;
1+ import type grapesjs from 'grapesjs' ;
2+ import postcss , { Rule , AtRule , Declaration } from 'postcss' ;
3+
4+ export type ParsedRule = {
5+ selectors : string ;
6+ style : Record < string , string > ;
7+ atRule ?: string ;
8+ params ?: string ;
9+ }
10+
11+ type Editor = grapesjs . Editor ;
212
313/**
414 * Log stuff
515 * @param {Editor } editor
616 * @param {* } msg
717 */
8- export const log = ( editor , msg ) =>
18+ export const log = ( editor : Editor , msg : any ) =>
919 editor && editor . log ( msg , { ns : 'parser-poscss' } ) ;
1020
1121/**
1222 * Create rule from node
1323 * @param {Object } node
1424 * @return {Object }
1525 */
16- export const createRule = node => {
17- const declarations = node . nodes || [ ] ;
18- const style = { } ;
26+ export const createRule = ( node : Rule ) : ParsedRule => {
27+ const declarations = ( node . nodes as Declaration [ ] ) || [ ] ;
28+ const style : Record < string , string > = { } ;
1929
2030 declarations . forEach ( ( { prop, value, important } ) => {
2131 style [ prop ] = value + ( important ? ' !important' : '' ) ;
@@ -33,28 +43,29 @@ export const createRule = node => {
3343 * @param {Array<Object> } result
3444 * @return {Object }
3545 */
36- export const createAtRule = ( node , result ) => {
46+ export const createAtRule = ( node : AtRule , result : ParsedRule [ ] ) => {
3747 const { name, params } = node ;
3848 const isNested = [ 'media' , 'keyframes' ] . indexOf ( name ) >= 0 ;
3949
4050 if ( isNested ) {
4151 node . nodes . forEach ( node => {
4252 result . push ( {
43- ...createRule ( node ) ,
53+ ...createRule ( node as Rule ) ,
4454 atRule : name ,
4555 params,
4656 } )
4757 } ) ;
4858 } else {
4959 result . push ( {
50- ...createRule ( node ) ,
60+ // @ts -ignore
61+ ...createRule ( node as Rule ) ,
5162 atRule : name ,
5263 } )
5364 }
5465} ;
5566
56- export default ( css , editor ) => {
57- const result = [ ] ;
67+ export default ( css : string , editor : Editor ) => {
68+ const result : ParsedRule [ ] = [ ] ;
5869 log ( editor , [ 'Input CSS' , css ] ) ;
5970
6071 const ast = postcss ( ) . process ( css ) . sync ( ) . root ;
0 commit comments