UNPKG

postcss-rtlcss

Version:

PostCSS plugin to build Cascading Style Sheets (CSS) with Left-To-Right (LTR) and Right-To-Left (RTL) rules

2 lines (1 loc) 21.6 kB
"use strict";var e,r,o=require("postcss"),n=require("rtlcss");!function(e){e.combined="combined",e.override="override",e.diff="diff"}(e||(e={})),function(e){e.ltr="ltr",e.rtl="rtl"}(r||(r={}));const i="keyframes",t="animation",s="animation-name",d=/rtl:/,l=/rtl:ignore/,a=/^\/\*!? *rtl:?(begin|end)?:(\w+):?([\s\S]*?) *\*\/$/,c=/(right|left)/i,p=/^(html)(?=\W|$)/,u=/(:root)(?=\W|$)/,f=/^(::view-transition(?:-(?:new|old|group|image-pair))?\()/,b=/[.?*+^$[\]\\(){}|-]/g,m=/\w$/;var g,v,h,y;!function(e){e.AT_RULE="atrule",e.COMMENT="comment",e.DECLARATION="decl",e.RULE="rule"}(g||(g={})),function(e){e.BOOLEAN="boolean",e.FUNCTION="function",e.NUMBER="number",e.STRING="string"}(v||(v={})),function(e){e.IGNORE="ignore",e.FREEZE="freeze",e.URLS="urls",e.RULES="rules",e.SOURCE="source",e.RAW="raw"}(h||(h={})),function(e){e.BEGIN="begin",e.END="end"}(y||(y={}));const R=e=>e.type===g.AT_RULE,E=e=>e.type===g.COMMENT,x=e=>e.type===g.DECLARATION,k=e=>e.type===g.RULE,w=e=>k(e)||R(e),O=e=>typeof e===v.BOOLEAN,A=e=>typeof e===v.FUNCTION,P=e=>typeof e===v.STRING,T=new RegExp("$-^"),N=[{name:"left-right",search:["left","Left","LEFT"],replace:["right","Right","RIGHT"]},{name:"ltr-rtl",search:["ltr","Ltr","LTR"],replace:["rtl","Rtl","RTL"]}],$=e=>{if(e.name)return e.name;const r=Array.isArray(e.search)?e.search[0]:e.search,o=Array.isArray(e.replace)?e.replace[0]:e.replace,n=/[^\w]/g;return`${r.replace(n,"-")}-${o.replace(n,"_")}`},L=e=>e.map(e=>({name:$(e),priority:100,search:e.search,replace:e.replace,options:{scope:"url",ignoreCase:!1}})),S=Object.keys(e),U=Object.keys(r),j=S.map(r=>e[r]),M=U.map(e=>r[e]),I=e=>!!P(e)||!!Array.isArray(e)&&e.every(e=>P(e)),C=e=>Array.isArray(e)&&e.every(e=>P(e.name)&&typeof e.priority===v.NUMBER&&Array.isArray(e.processors)&&e.processors.every(e=>e.expr instanceof RegExp&&A(e.action))),F=(e,r)=>P(r)?[...e,r]:[...e,...r],B=()=>({mode:e.combined,ltrPrefix:'[dir="ltr"]',rtlPrefix:'[dir="rtl"]',bothPrefix:"[dir]",prefixSelectorTransformer:null,safeBothPrefix:!1,ignorePrefixedRules:!0,source:r.ltr,processUrls:!1,processRuleNames:!1,processKeyFrames:!1,processEnv:!0,useCalc:!1,stringMap:L(N),greedy:!1,aliases:{},plugins:[]}),G={options:Object.assign({},B()),keyframes:[],keyframesToRemove:[],keyframesStringMap:{},keyframesRegExp:T,rules:[],containersToRemove:[],rulesPrefixRegExp:T,unmodifiedRules:[]},D=e=>{const r=Object.assign({},B());if(e.mode&&j.includes(e.mode)&&(r.mode=e.mode),e.source&&M.includes(e.source)&&(r.source=e.source),O(e.ignorePrefixedRules)&&(r.ignorePrefixedRules=e.ignorePrefixedRules),O(e.greedy)&&(r.greedy=e.greedy),I(e.ltrPrefix)&&(r.ltrPrefix=e.ltrPrefix),I(e.rtlPrefix)&&(r.rtlPrefix=e.rtlPrefix),I(e.bothPrefix)&&(r.bothPrefix=e.bothPrefix),A(e.prefixSelectorTransformer)&&(r.prefixSelectorTransformer=e.prefixSelectorTransformer),O(e.safeBothPrefix)&&(r.safeBothPrefix=e.safeBothPrefix),O(e.processUrls)&&(r.processUrls=e.processUrls),O(e.processRuleNames)&&(r.processRuleNames=e.processRuleNames),O(e.processKeyFrames)&&(r.processKeyFrames=e.processKeyFrames),O(e.processEnv)&&(r.processEnv=e.processEnv),O(e.useCalc)&&(r.useCalc=e.useCalc),o=e.stringMap,Array.isArray(o)&&o.every(e=>null!==e&&"object"==typeof e&&"search"in e&&"replace"in e&&typeof e.search==typeof e.replace&&I(e.search)&&I(e.replace)&&(!Array.isArray(e.search)||e.search.length===e.replace.length))){L(e.stringMap).forEach(e=>{e.name===N[0].name?r.stringMap.splice(0,1,e):e.name===N[1].name?r.stringMap.splice(1,1,e):r.stringMap.push(e)})}var o,n;return C(e.processDeclarationPlugins)&&(r.plugins=e.processDeclarationPlugins.map(e=>Object.assign(Object.assign({},e),{directives:{control:{},value:[]}}))),e.aliases&&(n=e.aliases,!Object.entries(n).some(e=>!P(e[1])))&&(r.aliases=e.aliases),r},K=e=>{G.options=D(e),G.keyframes=[],G.keyframesToRemove=[],G.keyframesStringMap={},G.keyframesRegExp=T,G.rules=[],G.containersToRemove=[],G.rulesPrefixRegExp=(e=>{const{ltrPrefix:r,rtlPrefix:o,bothPrefix:n,ignorePrefixedRules:i}=e;if(!i)return T;let t=[];return t=F(t,r),t=F(t,o),t=F(t,n),t=t.map(e=>{const r=e.replace(b,"\\$&");return m.test(e)?`${r}(?:\\W|$)`:r}),new RegExp(`(${t.join("|")})`)})(G.options),G.unmodifiedRules=[]},W=()=>{var e;G.keyframesStringMap=(e=>{const r={};return e.forEach(e=>{r[e.atRuleParams]={name:e.atRule.params,nameFlipped:e.atRuleFlipped.params}}),r})(G.keyframes),G.keyframesRegExp=(e=G.keyframesStringMap,new RegExp(`(^|[^\\w-]| )(${Object.keys(e).join("|")})( |[^\\w-]|$)`,"g"))},_=Object.values(h),Z=Object.values(y),q=e=>{const r=e.toString().match(a);if(r&&(e=>_.includes(`${e[2]}`)&&(void 0===e[1]||Z.includes(`${e[1]}`)))(r)){const e={directive:r[2]};return r[1]&&(e.block=r[1]),r[3]&&(e.option=r[3]),e}return null},z=(e,r)=>e.directive===h.IGNORE&&!e.block&&r[h.IGNORE]&&r[h.IGNORE].block===y.BEGIN,H=(e,r)=>{const o=e[r];if(o){const{block:n}=o;if(n!==y.BEGIN&&delete e[r],n!==y.END)return!0}return!1},J=(e,r)=>{const o=e[h.SOURCE],n=H(e,h.SOURCE);return o&&n?o.option:r||void 0},Q=(e,r,o,n)=>{e.each(e=>{if(E(e)||r.includes(e.type))if(E(e)){const r=q(e);r&&o(e,r)}else n(e)})},V=/^-\w+-/,X=e=>e.replace(V,""),Y=(e,r,o=void 0,n=!1,t=!1)=>{const s={};Q(r,[g.AT_RULE,g.RULE],(e,r)=>{z(r,s)||(s[r.directive]=r)},r=>{if(H(s,h.IGNORE))return;if(!R(r))return;if(X(r.name)===i)return;const d=J(s,o),l=H(s,h.FREEZE)||n;t&&r.nodes&&e.parseDeclarations(r,t,d,l,H(s,h.RULES),H(s,h.URLS)),e.parseAtRules(e,r,d,l,t),e.parseRules(e,r,d,l,t)})},ee=(e,r)=>{if(G.options.prefixSelectorTransformer){const o=G.options.prefixSelectorTransformer(e,r);if(o&&P(o))return o}return p.test(r)?r.replace(p,`$1${e}`):u.test(r)?r.replace(u,`${e}$1`):f.test(r)?r.replace(f,`${e}$1`):`${e} ${r}`},re=(e,r)=>{e.selectors=P(r)?e.selectors.map(e=>G.rulesPrefixRegExp.test(e)?e:ee(r,e)):e.selectors.reduce((e,o)=>e=G.rulesPrefixRegExp.test(o)?[...e,o]:e.concat(r.map(e=>ee(e,o))),[])},oe=e=>!!e.nodes&&e.some(e=>x(e)||k(e)&&oe(e)||R(e)&&oe(e)),ne=(e,r,o)=>{if((e=>e.some(e=>x(e)))(r)){let n;for(o=[...o];o.length;){n=o.shift();const r=e.nodes.find(e=>!(!k(e)||!k(n)||e.selector!==n.selector));r?n=r:(n=n.clone().removeAll(),e.append(n)),e=n}e.append(r)}},ie=(o,n,i,t,s)=>{const d={rule:o,ruleLTR:n,ruleRTL:i,ruleBoth:t,ruleSafe:s};return G.options.mode!==e.diff&&((o,n,i,t)=>{const{mode:s,ltrPrefix:d,rtlPrefix:l,bothPrefix:a,source:c}=G.options;s===e.combined?(re(o,c===r.ltr?d:l),re(n,c===r.ltr?l:d)):(re(o,c===r.ltr?l:d),re(n,c===r.ltr?d:l)),re(i,a),re(t,a)})(n,i,t,s),G.rules.push(d),d},te=(e,r,o,n,i)=>{const t=(e=>{const r=[],o=[];for(;w(e);)k(e)?r.unshift(e,...o.splice(0)):o.unshift(e),e=e.parent;return r.pop(),r})(e),s=t.shift();let d=G.rules.find(e=>e.rule===s);if(!d){const e=s.clone().removeAll(),r=e.clone(),o=e.clone(),n=e.clone();d=ie(s,e,r,o,n)}((e,r,o,n,i,t)=>{ne(i.ruleLTR,e,t),ne(i.ruleRTL,r,t),ne(i.ruleBoth,o,t),ne(i.ruleSafe,n,t)})(r,o,n,i,d,t)},se=(e,r="\n\n")=>{e&&(k(e)||R(e))&&(e.raws.before=`${r}${e.raws.before?e.raws.before.replace(/\n/g,""):""}`)},de=(...e)=>{e.forEach(e=>{const r=e.prev();r&&!E(r)&&se(e),e.walk(e=>{if(x(e)){const r=e;r.raws&&r.raws.value&&d.test(r.raws.value.raw)&&(delete r.raws.value,r.value=r.value.trim())}})})},le=e=>{oe(e)?e.walkRules(e=>{le(e),oe(e)||e.remove()}):e.remove()},ae=r=>{G.options.mode===e.diff&&G.containersToRemove.push(r)},ce=(n,i,t=void 0,s=!1,d=!1)=>{const l={},{mode:a,source:c,ltrPrefix:p,rtlPrefix:u}=G.options;Q(i,[g.RULE],(n,t)=>{var s,d;if(t.directive===h.RAW&&t.option){const f=J(l),b=o.parse(t.option,{from:null===(d=null===(s=i.source)||void 0===s?void 0:s.input)||void 0===d?void 0:d.from});return a!==e.diff&&b.walkRules(e=>{re(e,!f&&c===r.ltr||f&&f===r.ltr?u:p)}),void n.replaceWith(b.nodes)}se(n.next()),n.remove(),z(t,l)||(l[t.directive]=t)},o=>{const i=o;if(H(l,h.IGNORE))return void ae(i);const f=J(l,t),b=H(l,h.FREEZE)||s;if(b)return a===e.combined&&re(i,!f&&c===r.ltr||f&&f===r.ltr?p:u),void ae(i);(e=>!!e.selectors.find(e=>G.rulesPrefixRegExp.test(e)))(i)?ae(i):n.parseDeclarations(i,d,f,b,H(l,h.RULES),H(l,h.URLS)),n.parseAtRules(n,i,f,b,!0),n.parseRules(n,i,f,b,!0)})},pe=r=>{G.options.mode===e.diff&&G.keyframesToRemove.push(r)},ue=e=>{const{source:t,processUrls:s,useCalc:d,stringMap:l,processKeyFrames:a}=G.options;if(!a)return;const c={};Q(e,[g.AT_RULE,g.RULE],(e,r)=>{z(r,c)||(c[r.directive]=r)},e=>{var a,p;if(H(c,h.IGNORE))return void pe(e);if(!R(e))return;if(X(e.name)!==i)return;const u=e.toString(),f=n.process(u,{processUrls:s,useCalc:d,stringMap:l});if(u===f)return void pe(e);const b=o.parse(f,{from:null===(p=null===(a=e.source)||void 0===a?void 0:a.input)||void 0===p?void 0:p.from}).first,m=e.params,g=`${m}-${r.ltr}`,v=`${m}-${r.rtl}`,y=J(c);e.params=!y&&t===r.ltr||y&&y===r.ltr?g:v,b.params=!y&&t===r.ltr||y&&y===r.ltr?v:g,G.keyframes.push({atRuleParams:m,atRule:e,atRuleFlipped:b})}),W()};const fe={animation:{overridden:null,overrides:["animation-direction","animation-duration","animation-delay","animation-name","animation-fill-mode","animation-iteration-count","animation-play-state","animation-timing-function"]},background:{overridden:null,overrides:["background-attachment","background-clip","background-color","background-image","background-repeat","background-size"]},"background-position":{overridden:"background",overrides:["background-position-x","background-position-y"]},border:{overridden:null,overrides:[]},"border-bottom":{overridden:"border",overrides:["border-bottom-color","border-bottom-style","border-bottom-width"]},"border-left":{overridden:"border",overrides:["border-left-color","border-left-style","border-left-width"]},"border-right":{overridden:"border",overrides:["border-right-color","border-right-style","border-right-width"]},"border-top":{overridden:"border",overrides:["border-top-color","border-top-style","border-top-width"]},"border-color":{overridden:"border",overrides:["border-bottom-color","border-left-color","border-right-color","border-top-color"]},"border-style":{overridden:"border",overrides:["border-bottom-style","border-left-style","border-right-style","border-top-style"]},"border-width":{overridden:"border",overrides:["border-bottom-width","border-left-width","border-right-width","border-top-width"]},"border-radius":{overridden:null,overrides:["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius"]},margin:{overridden:null,overrides:["margin-bottom","margin-left","margin-top","margin-right"]},padding:{overridden:null,overrides:["padding-bottom","padding-left","padding-top","padding-right"]},transition:{overridden:null,overrides:["transition-delay","transition-duration","transition-property","transition-timing-function"]}},be={"border-left":{overridden:"border",overrides:["border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width"]},"border-right":{overridden:"border",overrides:["border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width"]},"border-left-color":{overridden:"border",overrides:["border-inline-end-color","border-inline-start-color"]},"border-right-color":{overridden:"border",overrides:["border-inline-end-color","border-inline-start-color"]},"border-left-style":{overridden:"border",overrides:["border-inline-end-style","border-inline-start-style"]},"border-right-style":{overridden:"border",overrides:["border-inline-end-style","border-inline-start-style"]},"border-left-width":{overridden:"border",overrides:["border-inline-end-width","border-inline-start-width"]},"border-right-width":{overridden:"border",overrides:["border-inline-end-width","border-inline-start-width"]},"border-radius":{overridden:null,overrides:["border-start-start-radius","border-start-end-radius","border-end-start-radius","border-end-end-radius"]},"border-bottom-left-radius":{overridden:"border-radius",overrides:["border-end-start-radius","border-end-end-radius"]},"border-bottom-right-radius":{overridden:"border-radius",overrides:["border-end-start-radius","border-end-end-radius"]},"border-top-left-radius":{overridden:"border-radius",overrides:["border-start-start-radius","border-start-end-radius"]},"border-top-right-radius":{overridden:"border-radius",overrides:["border-start-start-radius","border-start-end-radius"]},left:{overridden:null,overrides:["inset-inline","inset-inline-end","inset-inline-start"]},right:{overridden:null,overrides:["inset-inline","inset-inline-end","inset-inline-start"]},margin:{overridden:null,overrides:["margin-inline","margin-inline-end","margin-inline-start","margin-block","margin-block-end","margin-block-start"]},"margin-left":{overridden:null,overrides:["margin-inline","margin-inline-end","margin-inline-start"]},"margin-right":{overridden:null,overrides:["margin-inline","margin-inline-end","margin-inline-start"]},padding:{overridden:null,overrides:["padding-inline","padding-inline-end","padding-inline-start","padding-block","padding-block-end","padding-block-start"]},"padding-left":{overridden:null,overrides:["padding-inline","padding-inline-end","padding-inline-start"]},"padding-right":{overridden:null,overrides:["padding-inline","padding-inline-end","padding-inline-start"]}},me=["box-shadow","clear","cursor","direction","float","left","right","text-align","text-align-last","text-shadow","transform","transform-origin"],ge={0:["border-bottom-right-radius","border-bottom-left-radius","border-end-end-radius","border-end-start-radius","border-start-end-radius","border-start-start-radius","border-top-left-radius","border-top-right-radius","margin-block-end","margin-block-start","margin-top","margin-right","margin-bottom","margin-left","margin-inline-end","margin-inline-start","padding-block-end","padding-block-start","padding-top","padding-right","padding-bottom","padding-left","padding-inline-end","padding-inline-start","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-top","scroll-margin-right","scroll-margin-bottom","scroll-margin-left","scroll-margin-inline-end","scroll-margin-inline-start"],auto:["top","right","bottom","left","grid-column-end","grid-column-start","grid-row-end","grid-row-start","inset-block-end","inset-block-start","inset-inline-end","inset-inline-start","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-top","scroll-padding-right","scroll-padding-bottom","scroll-padding-left","scroll-padding-inline-end","scroll-padding-inline-start"],currentcolor:["border-block-start-color","border-block-end-color","border-top-color","border-right-color","border-bottom-color","border-left-color","border-inline-start-color","border-inline-end-color"],medium:["border-block-start-width","border-block-end-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-inline-start-width","border-inline-end-width"],none:["border-block-start","border-block-end","border-top","border-right","border-bottom","border-left","border-top-style","border-right-style","border-bottom-style","border-left-style","border-block-start-style","border-block-end-style","border-inline-start","border-inline-end","border-inline-start-style","border-inline-end-style"]},ve={},he={},ye={},Re=e=>Array.from(new Set(e)),Ee=e=>{const r=fe[e].overridden;return r?[r].concat(Ee(r)):[]};Object.keys(fe).forEach(e=>{const r=Ee(e);ve[e]=r,fe[e].overrides.forEach(o=>{ve[o]=[e].concat(r)})}),Object.keys(be).forEach(e=>{const r=(e=>{var r;const o=null===(r=fe[e])||void 0===r?void 0:r.overridden,n=be[e].overridden,i=o?[o].concat(Ee(o)):[],t=n?[n].concat(Ee(n)):[];return Re([...i,...t])})(e);ve[e]=ve[e]?Re([...ve[e],...r]):r,be[e].overrides.forEach(o=>{ve[o]=ve[o]?Re([...ve[o],...[e].concat(r)]):Re([e].concat(r))})}),Object.assign(he,ve),me.forEach(e=>{he[e]=[]}),Object.keys(ge).forEach(e=>{ge[e].forEach(r=>{ye[r]=e})});const xe=(e,r)=>{const o=e.clone(),n=e.prev();if(n&&E(n)){const e=n.clone();r.append(e),n.remove()}r.append(o)},ke=e=>{const r=!!e.raws&&!!e.raws.value&&e.raws.value.raw;return!(!r||!l.test(r))},we=(e,r)=>r.some(r=>ve[r]&&ve[r].includes(e)),Oe=(e,r,o)=>{if(o[r.prop]){return Object.entries(o[r.prop].indexes).some(n=>n[1].value===r.value.trim()&&!((e,r,o)=>{const n=e.index(r),i=Object.keys(o[r.prop].indexes).map(Number);return 1!==i.length&&i.some(e=>e>n)})(e,n[1].decl,o))}return!1},Ae={parseRules:ce,parseAtRules:Y,parseKeyFrames:ue,parseDeclarations:(r,i,d,l,a,p)=>{const{mode:u,source:f,safeBothPrefix:b,processUrls:m,processRuleNames:v,processEnv:y,useCalc:R,stringMap:E,greedy:w,aliases:O,plugins:A}=G.options,P=[],T=r.clone().removeAll(),N=T.clone(),$=T.clone(),L=T.clone(),S=Array.from(r.nodes).reduce((e,o)=>{if(x(o)){const n=r.index(o);e[o.prop]=e[o.prop]||{ignore:!1,indexes:{}},e[o.prop].indexes[n]={decl:o,value:o.value.trim(),ignore:!1}}return e},{}),U=[],j={};let M=!1;Q(r,[g.DECLARATION],(n,i)=>{var t,s;if(se(n.next()),n.remove(),i.directive===h.RAW&&i.option){const n=J(j,d),l=o.parse(i.option,{from:null===(s=null===(t=r.source)||void 0===t?void 0:t.input)||void 0===s?void 0:s.from});u===e.combined&&!n||n&&(u===e.combined&&n===f||u===e.override&&n!==f)?N.append(l.nodes):T.append(l.nodes)}z(i,j)||(j[i.directive]=i)},i=>{var a,g;const v=i;if(H(j,h.IGNORE))return;const x=H(j,h.URLS),k=`${v.toString()};`,I=n.process(k,{processUrls:m||x||p,processEnv:y,useCalc:R,stringMap:E,greedy:w,aliases:O},A),C=o.parse(I,{from:null===(g=null===(a=r.source)||void 0===a?void 0:a.input)||void 0===g?void 0:g.from}).first;C.source=v.source,C.raws=v.raws;const F=v.prop,B=X(F),D=v.value.trim(),K=Object.keys(S[F].indexes).map(Number),W=B===t||B===s||O[B]===t||O[B]===s,_=C.prop.trim(),Z=C.value.trim(),q=O[B]?ve[O[B]]:ve[B],z=U.includes(B)||U.includes(O[B])||!!q&&q.some(e=>U.indexOf(e)>=0),Q=O[B]?we(O[B],U):we(B,U),V=!!b&&(O[B]?!!he[O[B]]:!!he[B]),Y=J(j,d),ee=!Y||Y===f||u===e.diff;if(H(j,h.FREEZE)||l)u===e.combined&&(xe(v,T),U.push(B),P.push(v));else if((F!==_||D!==Z||z||Q||V||W)&&!(S[v.prop].ignore&&!V||((e,r,o,n)=>{const i=e.index(r),t=n[r.prop],s=Object.keys(t.indexes).map(Number).sort();if(1===s.length)return!1;const d=s.filter(e=>e>i);if(d.length){if(c.test(r.prop)){if(n[o.prop]){const e=n[o.prop],r=Object.keys(e.indexes).map(Number).sort().slice(-1)[0],i=d.slice(-1)[0];return t.indexes[i].value===e.indexes[r].value&&(t.ignore=!0,e.ignore=!0),!0}return!1}return!0}return!1})(r,v,C,S)))if(W)if(F!==_||D!==Z||0!==G.keyframes.length&&G.keyframesRegExp.test(D)){const r=v.value.replace(G.keyframesRegExp,(e,r,o,n)=>r+G.keyframesStringMap[o].name+n),o=v.value.replace(G.keyframesRegExp,(e,r,o,n)=>r+G.keyframesStringMap[o].nameFlipped+n),n=v.clone();if(u===e.combined){const e=v.clone();e.value=r,n.value=o,ee?(T.append(e),N.append(n)):(T.append(n),N.append(e)),P.push(v)}else v.value=r,n.value=o,ee?T.append(n):N.append(n),b&&u!==e.diff&&(xe(v,L),P.push(v))}else b&&!ke(v)&&(u===e.diff?xe(v,T):xe(v,L),P.push(v));else{if(F===_&&D===Z)return void((z||V||Q)&&!ke(v)&&(u===e.diff?xe(v,T):xe(v,z||Q?$:L),P.push(v)));if(Oe(r,C,S))return M=!0,void(V&&!ke(v)&&(u===e.diff?xe(v,T):xe(v,L),P.push(v)));if(u===e.combined)ee?(xe(v,T),N.append(C)):(xe(v,N),T.append(C)),P.push(v);else{if(c.test(v.prop)&&!S[C.prop]&&r.index(v)===K[0]){const e=v.clone();e.value=ye[v.prop]||"unset",ee?T.append(e):N.append(e)}V&&!ke(v)&&u!==e.diff&&(xe(v,L),P.push(v)),ee?T.append(C):N.append(C)}U.push(B)}}),P.length&&P.forEach(e=>e.remove()),T.nodes.length||N.nodes.length||$.nodes.length||L.nodes.length?i?te(r,T,N,$,L):ie(r,T,N,$,L):k(r)&&(v||a)&&!M?G.unmodifiedRules.push({rule:r,hasParentRule:i}):u===e.diff&&G.containersToRemove.push(r)}};function Pe(r={}){const o=r.runOnExit?"OnceExit":"Once";return{postcssPlugin:"postcss-rtlcss",[o](o){K(r),ue(o),Y(Ae,o),ce(Ae,o),(()=>{if(!G.unmodifiedRules.length)return;const r=G.options.stringMap.reduce((e,r)=>{const o=P(r.search)?[r.search]:r.search,n=P(r.replace)?[r.replace]:r.replace;return o.forEach((r,o)=>{e[r]=n[o],e[n[o]]=r}),e},{}),o=Object.keys(r).join("|"),n=G.options.greedy?new RegExp(`(${o})`,"g"):new RegExp(`\\b(${o})\\b`,"g"),i={},t=[];G.unmodifiedRules.forEach(r=>{let o=!1;r.rule.selectors.forEach(e=>{n.test(e)&&(i[e]=r.rule.clone(),o=!0),n.lastIndex=0}),o?t.push(r):G.options.mode===e.diff&&G.containersToRemove.push(r.rule)}),t.forEach(o=>{const{rule:t,hasParentRule:s}=o,d=t.clone(),l=t.clone().removeAll();let a;for(const e of t.selectors){const o=e.replace(n,(e,o)=>r[o]);if(i[o]){a=i[o].clone();break}}a&&(a.selectors=d.selectors,G.options.mode===e.combined?s?te(t.removeAll(),d,a,l,l):ie(t.removeAll(),d,a,l,l):s?te(G.options.mode===e.override?t:t.removeAll(),a,l,l,l):ie(G.options.mode===e.override?t:t.removeAll(),a,l,l,l)),G.options.mode===e.diff&&G.containersToRemove.push(t)})})(),(()=>{const{rules:e}=G;e.forEach(e=>{const{rule:r,ruleLTR:o,ruleRTL:n,ruleBoth:i,ruleSafe:t}=e;i.nodes.length&&r.after(i),n.nodes.length&&r.after(n),o.nodes.length&&r.after(o),t.nodes.length&&r.after(t),le(r),de(r,o,n,i,t)})})(),(()=>{const{keyframes:e}=G;e.forEach(({atRule:e,atRuleFlipped:r})=>{e.after(r),de(e,r)})})(),(r=>{const{options:o,rules:n,containersToRemove:t,keyframes:s,keyframesToRemove:d}=G,{mode:l,processKeyFrames:a}=o;l===e.diff&&(n.forEach(e=>{e.rule.remove()}),t.forEach(e=>{e.remove()}),s.forEach(({atRule:e})=>{e.remove()}),d.forEach(e=>{e.remove()})),r.walk(o=>{if(l===e.diff&&(E(o)||R(o)&&!a&&X(o.name)===i)&&o.remove(),(k(o)||R(o))&&o.nodes)if(oe(o)){const e=o.prev();e?E(e)||se(o):se(o,o.parent===r?"":"\n")}else l===e.diff&&o.remove()})})(o)}}}Pe.postcss=!0,module.exports=Pe;