Open
Description
This thread to summarize all contracts between icss plugins
- postcss-icss-selectors
- postcss-icss-values
- postcss-icss-composes
This plugins do not require contracts
- postcss-icss-import
- postcss-icss-url
- postcss-icss-keyframes
Values plugin before selectors and composes plugins
If local identifier already exists :import
keys then skip scoping
@value local1 from 'path';
.local1 {}
.local2 { composes: local1; }
.local3 { composes: exported from 'path'; }
/* after values */
:import('path') {
__local1: local1
}
:export {
local1: __local1
}
.__local1 {}
.local2 { composes: __local1; }
.local3 { composes: exported from 'path'; }
/* after selectors and compose */
:import('path') {
__local1: local1;
__exported: exported;
}
:export {
local1: __local1;
local2: __scope__local2;
local3: __scope__local3;
}
.__local1 {}
.__scope__local2 {}
.__scope__local3 {}
Values plugin after selectors and composes plugin
Values can't be detected in compound exported values
@value local2 from 'path';
.local1 {}
.local2 { composes: local1; }
.local3 { composes: exported from 'path'; }
/* after selectors and compose */
:import('path') {
__exported: exported;
}
:export {
local1: __scope__local1;
local2: __scope__local2 __scope__local1;
local3: __scope__local3 __exported;
}
@value local2 from 'path';
.__scope__local1 {}
.__scope__local2 {}
.__scope__local3 {}
Composes plugin before selectors plugin
If exported key already exists then apply scoping and replace exported value if present in scoped list
Else add identifier as key and scoped class name as value
.local1 {}
.local2 { composes: local1; }
.local3 { composes: exported from 'path'; }
/* after composes */
:import('path') {
__exported: exported
}
:export {
local2: local1;
local3: __exported;
}
.local1 {}
.local2 {}
/* after selectors */
:import('path') {
__exported: exported
}
:export {
local1: __scope__local1;
local2: __scope__local2 __scope__local1;
local3: __scope__local3 __exported;
}
.__scope__local1 {}
.__scope__local2 {}
.__scope__local3 {}
Composes plugin after selectors plugin
If exported value contains class name then append composed one
else add class name as key and composed one as value
.local1 {}
.local2 {
composes: local1;
}
.local3 {
composes: exported from 'path';
}
/* after selectors */
:export {
local1: __scope__local1;
local2: __scope__local2;
local3: __scope__local3
}
.__scope__local1 {}
.__scope__local2 {
composes: local1;
}
.__scope__local3 {
composes: exported from 'path';
}
/* after composes */
:import('path') {
__exported: exported
}
:export {
local1: __scope__local1;
local2: __scope__local2 __scope__local1;
local3: __scope__local3 __exported
}
.__scope__local1 {}
.__scope__local2 {}
.__scope__local3 {}
Metadata
Metadata
Assignees
Labels
No labels