postcss-focus-within 9.0.1 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -3
- package/README.md +5 -5
- package/dist/browser-global.js +1 -1
- package/dist/browser-global.js.map +1 -1
- package/dist/browser.cjs +1 -1
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.mjs +1 -1
- package/dist/browser.mjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +1 -1
- package/package.json +5 -12
- package/dist/index.cjs +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Changes to PostCSS Focus Within
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### 10.0.1
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
_July 22, 2026_
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- Rewritten browser polyfill as ES3
|
|
8
8
|
|
|
9
9
|
[Full CHANGELOG](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-focus-within/CHANGELOG.md)
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ To use this feature you need to do two things :
|
|
|
9
9
|
- add the [PostCSS plugin](#usage) that transforms the selector into a class or attribute
|
|
10
10
|
- add the [browser polyfill](#browser) that sets the attribute or class on elements in a browser
|
|
11
11
|
|
|
12
|
-
```
|
|
12
|
+
```css
|
|
13
13
|
.my-form-field:focus-within label {
|
|
14
14
|
background-color: yellow;
|
|
15
15
|
}
|
|
@@ -62,7 +62,7 @@ is preserved. By default, it is preserved.
|
|
|
62
62
|
postcssFocusWithin({ preserve: false })
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
```
|
|
65
|
+
```css
|
|
66
66
|
.my-form-field:focus-within label {
|
|
67
67
|
background-color: yellow;
|
|
68
68
|
}
|
|
@@ -86,7 +86,7 @@ to polyfill `classList` in those cases.
|
|
|
86
86
|
postcssFocusWithin({ replaceWith: '.focus-within' });
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
```
|
|
89
|
+
```css
|
|
90
90
|
.my-form-field:focus-within label {
|
|
91
91
|
background-color: yellow;
|
|
92
92
|
}
|
|
@@ -116,7 +116,7 @@ Set this to `true` to prevent the class from being added.
|
|
|
116
116
|
postcssFocusWithin({ disablePolyfillReadyClass: true })
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
```
|
|
119
|
+
```css
|
|
120
120
|
.my-form-field:focus-within label {
|
|
121
121
|
background-color: yellow;
|
|
122
122
|
}
|
|
@@ -143,7 +143,7 @@ or
|
|
|
143
143
|
|
|
144
144
|
```html
|
|
145
145
|
<!-- When using a CDN url you will have to manually update the version number -->
|
|
146
|
-
<script src="https://unpkg.com/postcss-focus-within@
|
|
146
|
+
<script src="https://unpkg.com/postcss-focus-within@10.0.1/dist/browser-global.js"></script>
|
|
147
147
|
<script>focusWithinInit()</script>
|
|
148
148
|
```
|
|
149
149
|
|
package/dist/browser-global.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(){
|
|
1
|
+
!function(){function focusWithin(e){var t={force:!1,replaceWith:"[focus-within]"};void 0!==e&&"force"in e&&(t.force=e.force),void 0!==e&&"replaceWith"in e&&(t.replaceWith=e.replaceWith);try{if(document.querySelector(":focus-within"),!t.force)return}catch(r){}var n,o,c,i,d,u=(n=t.replaceWith,d=[],"."===n[0]?(o=n.slice(1),c=function remove(e){e.classList.remove(o)},i=function add(e){e.classList.add(o)}):(o=n.slice(1,-1),c=function remove(e){e.removeAttribute(o,"")},i=function add(e){e.setAttribute(o,"")}),function handleFocusChange(){for(var e=0;e<d.length;e++)c(d[e]);d.length=0;var t=document.activeElement;if(!/^(#document|HTML|BODY)$/.test(Object(t).nodeName))for(;t&&1===t.nodeType;)i(t),d.push(t),t=t.parentNode}),s=function initializeEventListeners(){document.documentElement.className.indexOf("js-focus-within")>-1||(document.documentElement.className=document.documentElement.className+" js-focus-within",document.addEventListener("focus",u,!0),document.addEventListener("blur",u,!0))};"complete"===document.readyState?s():document.addEventListener("DOMContentLoaded",s)}("object"==typeof window&&window||"object"==typeof self&&self||{}).focusWithinInit=focusWithin}();
|
|
2
2
|
//# sourceMappingURL=browser-global.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-global.js","sources":["../src/
|
|
1
|
+
{"version":3,"file":"browser-global.js","sources":["../src/browser.js","../src/browser-global.js"],"sourcesContent":["function generateHandler(replaceWith) {\n\tvar selector;\n\tvar remove;\n\tvar add;\n\tvar lastElements = [];\n\n\tif (replaceWith[0] === '.') {\n\t\tselector = replaceWith.slice(1);\n\t\tremove = function remove(el) {\n\t\t\tel.classList.remove(selector);\n\t\t};\n\n\t\tadd = function add(el) {\n\t\t\tel.classList.add(selector);\n\t\t};\n\t} else {\n\t\t// A bit naive\n\t\tselector = replaceWith.slice(1, -1);\n\n\t\tremove = function remove(el) {\n\t\t\tel.removeAttribute(selector, '');\n\t\t};\n\n\t\tadd = function add(el) {\n\t\t\tel.setAttribute(selector, '');\n\t\t};\n\t}\n\n\treturn function handleFocusChange() {\n\t\tfor (var i = 0; i < lastElements.length; i++) {\n\t\t\tremove(lastElements[i]);\n\t\t}\n\t\tlastElements.length = 0;\n\n\t\tvar activeElement = document.activeElement;\n\n\t\t// only add focus if it has not been added and is not the document element\n\t\tif (!/^(#document|HTML|BODY)$/.test(Object(activeElement).nodeName)) {\n\t\t\twhile (activeElement && activeElement.nodeType === 1) {\n\t\t\t\tadd(activeElement);\n\t\t\t\tlastElements.push(activeElement);\n\n\t\t\t\tactiveElement = activeElement.parentNode;\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport default function focusWithin(opts) {\n\t// configuration\n\tvar options = {\n\t\tforce: false,\n\t\treplaceWith: '[focus-within]',\n\t};\n\n\tif (typeof opts !== 'undefined' && 'force' in opts) {\n\t\toptions.force = opts.force;\n\t}\n\n\tif (typeof opts !== 'undefined' && 'replaceWith' in opts) {\n\t\toptions.replaceWith = opts.replaceWith;\n\t}\n\n\ttry {\n\t\tdocument.querySelector(':focus-within');\n\n\t\tif (!options.force) {\n\t\t\treturn;\n\t\t}\n\t} catch (_) {}\n\n\tvar handleFocusChange = generateHandler(options.replaceWith);\n\n\tvar initialize = function initializeEventListeners() {\n\t\tif (document.documentElement.className.indexOf('js-focus-within') > -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.documentElement.className = document.documentElement.className + ' js-focus-within';\n\t\tdocument.addEventListener('focus', handleFocusChange, true);\n\t\tdocument.addEventListener('blur', handleFocusChange, true);\n\t};\n\n\tif (document.readyState === 'complete') {\n\t\tinitialize();\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', initialize);\n\t}\n}\n","import { default as focusWithinInit } from './browser';\n\n(function (global) {\n\tglobal.focusWithinInit = focusWithinInit;\n}('object' === typeof window && window || 'object' === typeof self && self || {}));\n"],"names":["focusWithin","opts","options","force","replaceWith","document","querySelector","_","selector","remove","add","lastElements","handleFocusChange","slice","el","classList","removeAttribute","setAttribute","i","length","activeElement","test","Object","nodeName","nodeType","push","parentNode","initialize","initializeEventListeners","documentElement","className","indexOf","addEventListener","readyState","window","self","focusWithinInit"],"mappings":"YAgDe,SAASA,YAAYC,GAEnC,IAAIC,EAAU,CACbC,OAAO,EACPC,YAAa,uBAGM,IAATH,GAAwB,UAAWA,IAC7CC,EAAQC,MAAQF,EAAKE,YAGF,IAATF,GAAwB,gBAAiBA,IACnDC,EAAQE,YAAcH,EAAKG,aAG5B,IAGC,GAFAC,SAASC,cAAc,kBAElBJ,EAAQC,MACZ,MAEF,CAAE,MAAOI,GAAI,CAEb,IAvEwBH,EACpBI,EACAC,EACAC,EACAC,EAmEAC,GAvEoBR,EAuEgBF,EAAQE,YAnE5CO,EAAe,GAEI,MAAnBP,EAAY,IACfI,EAAWJ,EAAYS,MAAM,GAC7BJ,EAAS,SAASA,OAAOK,GACxBA,EAAGC,UAAUN,OAAOD,EACrB,EAEAE,EAAM,SAASA,IAAII,GAClBA,EAAGC,UAAUL,IAAIF,EAClB,IAGAA,EAAWJ,EAAYS,MAAM,GAAG,GAEhCJ,EAAS,SAASA,OAAOK,GACxBA,EAAGE,gBAAgBR,EAAU,GAC9B,EAEAE,EAAM,SAASA,IAAII,GAClBA,EAAGG,aAAaT,EAAU,GAC3B,GAGM,SAASI,oBACf,IAAK,IAAIM,EAAI,EAAGA,EAAIP,EAAaQ,OAAQD,IACxCT,EAAOE,EAAaO,IAErBP,EAAaQ,OAAS,EAEtB,IAAIC,EAAgBf,SAASe,cAG7B,IAAK,0BAA0BC,KAAKC,OAAOF,GAAeG,UACzD,KAAOH,GAA4C,IAA3BA,EAAcI,UACrCd,EAAIU,GACJT,EAAac,KAAKL,GAElBA,EAAgBA,EAAcM,UAGjC,GA4BIC,EAAa,SAASC,2BACrBvB,SAASwB,gBAAgBC,UAAUC,QAAQ,wBAI/C1B,SAASwB,gBAAgBC,UAAYzB,SAASwB,gBAAgBC,UAAY,mBAC1EzB,SAAS2B,iBAAiB,QAASpB,GAAmB,GACtDP,SAAS2B,iBAAiB,OAAQpB,GAAmB,GACtD,EAE4B,aAAxBP,SAAS4B,WACZN,IAEAtB,SAAS2B,iBAAiB,mBAAoBL,EAEhD,ECpFE,iBAAoBO,QAAUA,QAAU,iBAAoBC,MAAQA,MAAQ,IADtEC,gBAAkBA"}
|
package/dist/browser.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
module.exports=function focusWithin(e){var t={force:!1,replaceWith:"[focus-within]"};void 0!==e&&"force"in e&&(t.force=e.force),void 0!==e&&"replaceWith"in e&&(t.replaceWith=e.replaceWith);try{if(document.querySelector(":focus-within"),!t.force)return}catch(a){}var n,c,o,i,d,r=(n=t.replaceWith,d=[],"."===n[0]?(c=n.slice(1),o=function remove(e){e.classList.remove(c)},i=function add(e){e.classList.add(c)}):(c=n.slice(1,-1),o=function remove(e){e.removeAttribute(c,"")},i=function add(e){e.setAttribute(c,"")}),function handleFocusChange(){for(var e=0;e<d.length;e++)o(d[e]);d.length=0;var t=document.activeElement;if(!/^(#document|HTML|BODY)$/.test(Object(t).nodeName))for(;t&&1===t.nodeType;)i(t),d.push(t),t=t.parentNode}),u=function initializeEventListeners(){document.documentElement.className.indexOf("js-focus-within")>-1||(document.documentElement.className=document.documentElement.className+" js-focus-within",document.addEventListener("focus",r,!0),document.addEventListener("blur",r,!0))};"complete"===document.readyState?u():document.addEventListener("DOMContentLoaded",u)};
|
|
2
2
|
//# sourceMappingURL=browser.cjs.map
|
package/dist/browser.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.cjs","sources":["../src/
|
|
1
|
+
{"version":3,"file":"browser.cjs","sources":["../src/browser.js"],"sourcesContent":["function generateHandler(replaceWith) {\n\tvar selector;\n\tvar remove;\n\tvar add;\n\tvar lastElements = [];\n\n\tif (replaceWith[0] === '.') {\n\t\tselector = replaceWith.slice(1);\n\t\tremove = function remove(el) {\n\t\t\tel.classList.remove(selector);\n\t\t};\n\n\t\tadd = function add(el) {\n\t\t\tel.classList.add(selector);\n\t\t};\n\t} else {\n\t\t// A bit naive\n\t\tselector = replaceWith.slice(1, -1);\n\n\t\tremove = function remove(el) {\n\t\t\tel.removeAttribute(selector, '');\n\t\t};\n\n\t\tadd = function add(el) {\n\t\t\tel.setAttribute(selector, '');\n\t\t};\n\t}\n\n\treturn function handleFocusChange() {\n\t\tfor (var i = 0; i < lastElements.length; i++) {\n\t\t\tremove(lastElements[i]);\n\t\t}\n\t\tlastElements.length = 0;\n\n\t\tvar activeElement = document.activeElement;\n\n\t\t// only add focus if it has not been added and is not the document element\n\t\tif (!/^(#document|HTML|BODY)$/.test(Object(activeElement).nodeName)) {\n\t\t\twhile (activeElement && activeElement.nodeType === 1) {\n\t\t\t\tadd(activeElement);\n\t\t\t\tlastElements.push(activeElement);\n\n\t\t\t\tactiveElement = activeElement.parentNode;\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport default function focusWithin(opts) {\n\t// configuration\n\tvar options = {\n\t\tforce: false,\n\t\treplaceWith: '[focus-within]',\n\t};\n\n\tif (typeof opts !== 'undefined' && 'force' in opts) {\n\t\toptions.force = opts.force;\n\t}\n\n\tif (typeof opts !== 'undefined' && 'replaceWith' in opts) {\n\t\toptions.replaceWith = opts.replaceWith;\n\t}\n\n\ttry {\n\t\tdocument.querySelector(':focus-within');\n\n\t\tif (!options.force) {\n\t\t\treturn;\n\t\t}\n\t} catch (_) {}\n\n\tvar handleFocusChange = generateHandler(options.replaceWith);\n\n\tvar initialize = function initializeEventListeners() {\n\t\tif (document.documentElement.className.indexOf('js-focus-within') > -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.documentElement.className = document.documentElement.className + ' js-focus-within';\n\t\tdocument.addEventListener('focus', handleFocusChange, true);\n\t\tdocument.addEventListener('blur', handleFocusChange, true);\n\t};\n\n\tif (document.readyState === 'complete') {\n\t\tinitialize();\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', initialize);\n\t}\n}\n"],"names":["focusWithin","opts","options","force","replaceWith","document","querySelector","_","selector","remove","add","lastElements","handleFocusChange","slice","el","classList","removeAttribute","setAttribute","i","length","activeElement","test","Object","nodeName","nodeType","push","parentNode","initialize","initializeEventListeners","documentElement","className","indexOf","addEventListener","readyState"],"mappings":"eAgDe,SAASA,YAAYC,GAEnC,IAAIC,EAAU,CACbC,OAAO,EACPC,YAAa,uBAGM,IAATH,GAAwB,UAAWA,IAC7CC,EAAQC,MAAQF,EAAKE,YAGF,IAATF,GAAwB,gBAAiBA,IACnDC,EAAQE,YAAcH,EAAKG,aAG5B,IAGC,GAFAC,SAASC,cAAc,kBAElBJ,EAAQC,MACZ,MAEF,CAAE,MAAOI,GAAI,CAEb,IAvEwBH,EACpBI,EACAC,EACAC,EACAC,EAmEAC,GAvEoBR,EAuEgBF,EAAQE,YAnE5CO,EAAe,GAEI,MAAnBP,EAAY,IACfI,EAAWJ,EAAYS,MAAM,GAC7BJ,EAAS,SAASA,OAAOK,GACxBA,EAAGC,UAAUN,OAAOD,EACrB,EAEAE,EAAM,SAASA,IAAII,GAClBA,EAAGC,UAAUL,IAAIF,EAClB,IAGAA,EAAWJ,EAAYS,MAAM,GAAG,GAEhCJ,EAAS,SAASA,OAAOK,GACxBA,EAAGE,gBAAgBR,EAAU,GAC9B,EAEAE,EAAM,SAASA,IAAII,GAClBA,EAAGG,aAAaT,EAAU,GAC3B,GAGM,SAASI,oBACf,IAAK,IAAIM,EAAI,EAAGA,EAAIP,EAAaQ,OAAQD,IACxCT,EAAOE,EAAaO,IAErBP,EAAaQ,OAAS,EAEtB,IAAIC,EAAgBf,SAASe,cAG7B,IAAK,0BAA0BC,KAAKC,OAAOF,GAAeG,UACzD,KAAOH,GAA4C,IAA3BA,EAAcI,UACrCd,EAAIU,GACJT,EAAac,KAAKL,GAElBA,EAAgBA,EAAcM,UAGjC,GA4BIC,EAAa,SAASC,2BACrBvB,SAASwB,gBAAgBC,UAAUC,QAAQ,wBAI/C1B,SAASwB,gBAAgBC,UAAYzB,SAASwB,gBAAgBC,UAAY,mBAC1EzB,SAAS2B,iBAAiB,QAASpB,GAAmB,GACtDP,SAAS2B,iBAAiB,OAAQpB,GAAmB,GACtD,EAE4B,aAAxBP,SAAS4B,WACZN,IAEAtB,SAAS2B,iBAAiB,mBAAoBL,EAEhD"}
|
package/dist/browser.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
function focusWithin(e){var t={force:!1,replaceWith:"[focus-within]"};void 0!==e&&"force"in e&&(t.force=e.force),void 0!==e&&"replaceWith"in e&&(t.replaceWith=e.replaceWith);try{if(document.querySelector(":focus-within"),!t.force)return}catch(u){}var n,c,o,i,d,a=(n=t.replaceWith,d=[],"."===n[0]?(c=n.slice(1),o=function remove(e){e.classList.remove(c)},i=function add(e){e.classList.add(c)}):(c=n.slice(1,-1),o=function remove(e){e.removeAttribute(c,"")},i=function add(e){e.setAttribute(c,"")}),function handleFocusChange(){for(var e=0;e<d.length;e++)o(d[e]);d.length=0;var t=document.activeElement;if(!/^(#document|HTML|BODY)$/.test(Object(t).nodeName))for(;t&&1===t.nodeType;)i(t),d.push(t),t=t.parentNode}),r=function initializeEventListeners(){document.documentElement.className.indexOf("js-focus-within")>-1||(document.documentElement.className=document.documentElement.className+" js-focus-within",document.addEventListener("focus",a,!0),document.addEventListener("blur",a,!0))};"complete"===document.readyState?r():document.addEventListener("DOMContentLoaded",r)}export{focusWithin as default};
|
|
2
2
|
//# sourceMappingURL=browser.mjs.map
|
package/dist/browser.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.mjs","sources":["../src/
|
|
1
|
+
{"version":3,"file":"browser.mjs","sources":["../src/browser.js"],"sourcesContent":["function generateHandler(replaceWith) {\n\tvar selector;\n\tvar remove;\n\tvar add;\n\tvar lastElements = [];\n\n\tif (replaceWith[0] === '.') {\n\t\tselector = replaceWith.slice(1);\n\t\tremove = function remove(el) {\n\t\t\tel.classList.remove(selector);\n\t\t};\n\n\t\tadd = function add(el) {\n\t\t\tel.classList.add(selector);\n\t\t};\n\t} else {\n\t\t// A bit naive\n\t\tselector = replaceWith.slice(1, -1);\n\n\t\tremove = function remove(el) {\n\t\t\tel.removeAttribute(selector, '');\n\t\t};\n\n\t\tadd = function add(el) {\n\t\t\tel.setAttribute(selector, '');\n\t\t};\n\t}\n\n\treturn function handleFocusChange() {\n\t\tfor (var i = 0; i < lastElements.length; i++) {\n\t\t\tremove(lastElements[i]);\n\t\t}\n\t\tlastElements.length = 0;\n\n\t\tvar activeElement = document.activeElement;\n\n\t\t// only add focus if it has not been added and is not the document element\n\t\tif (!/^(#document|HTML|BODY)$/.test(Object(activeElement).nodeName)) {\n\t\t\twhile (activeElement && activeElement.nodeType === 1) {\n\t\t\t\tadd(activeElement);\n\t\t\t\tlastElements.push(activeElement);\n\n\t\t\t\tactiveElement = activeElement.parentNode;\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport default function focusWithin(opts) {\n\t// configuration\n\tvar options = {\n\t\tforce: false,\n\t\treplaceWith: '[focus-within]',\n\t};\n\n\tif (typeof opts !== 'undefined' && 'force' in opts) {\n\t\toptions.force = opts.force;\n\t}\n\n\tif (typeof opts !== 'undefined' && 'replaceWith' in opts) {\n\t\toptions.replaceWith = opts.replaceWith;\n\t}\n\n\ttry {\n\t\tdocument.querySelector(':focus-within');\n\n\t\tif (!options.force) {\n\t\t\treturn;\n\t\t}\n\t} catch (_) {}\n\n\tvar handleFocusChange = generateHandler(options.replaceWith);\n\n\tvar initialize = function initializeEventListeners() {\n\t\tif (document.documentElement.className.indexOf('js-focus-within') > -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.documentElement.className = document.documentElement.className + ' js-focus-within';\n\t\tdocument.addEventListener('focus', handleFocusChange, true);\n\t\tdocument.addEventListener('blur', handleFocusChange, true);\n\t};\n\n\tif (document.readyState === 'complete') {\n\t\tinitialize();\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', initialize);\n\t}\n}\n"],"names":["focusWithin","opts","options","force","replaceWith","document","querySelector","_","selector","remove","add","lastElements","handleFocusChange","slice","el","classList","removeAttribute","setAttribute","i","length","activeElement","test","Object","nodeName","nodeType","push","parentNode","initialize","initializeEventListeners","documentElement","className","indexOf","addEventListener","readyState"],"mappings":"AAgDe,SAASA,YAAYC,GAEnC,IAAIC,EAAU,CACbC,OAAO,EACPC,YAAa,uBAGM,IAATH,GAAwB,UAAWA,IAC7CC,EAAQC,MAAQF,EAAKE,YAGF,IAATF,GAAwB,gBAAiBA,IACnDC,EAAQE,YAAcH,EAAKG,aAG5B,IAGC,GAFAC,SAASC,cAAc,kBAElBJ,EAAQC,MACZ,MAEF,CAAE,MAAOI,GAAI,CAEb,IAvEwBH,EACpBI,EACAC,EACAC,EACAC,EAmEAC,GAvEoBR,EAuEgBF,EAAQE,YAnE5CO,EAAe,GAEI,MAAnBP,EAAY,IACfI,EAAWJ,EAAYS,MAAM,GAC7BJ,EAAS,SAASA,OAAOK,GACxBA,EAAGC,UAAUN,OAAOD,EACrB,EAEAE,EAAM,SAASA,IAAII,GAClBA,EAAGC,UAAUL,IAAIF,EAClB,IAGAA,EAAWJ,EAAYS,MAAM,GAAG,GAEhCJ,EAAS,SAASA,OAAOK,GACxBA,EAAGE,gBAAgBR,EAAU,GAC9B,EAEAE,EAAM,SAASA,IAAII,GAClBA,EAAGG,aAAaT,EAAU,GAC3B,GAGM,SAASI,oBACf,IAAK,IAAIM,EAAI,EAAGA,EAAIP,EAAaQ,OAAQD,IACxCT,EAAOE,EAAaO,IAErBP,EAAaQ,OAAS,EAEtB,IAAIC,EAAgBf,SAASe,cAG7B,IAAK,0BAA0BC,KAAKC,OAAOF,GAAeG,UACzD,KAAOH,GAA4C,IAA3BA,EAAcI,UACrCd,EAAIU,GACJT,EAAac,KAAKL,GAElBA,EAAgBA,EAAcM,UAGjC,GA4BIC,EAAa,SAASC,2BACrBvB,SAASwB,gBAAgBC,UAAUC,QAAQ,wBAI/C1B,SAASwB,gBAAgBC,UAAYzB,SAASwB,gBAAgBC,UAAY,mBAC1EzB,SAAS2B,iBAAiB,QAASpB,GAAmB,GACtDP,SAAS2B,iBAAiB,OAAQpB,GAAmB,GACtD,EAE4B,aAAxBP,SAAS4B,WACZN,IAEAtB,SAAS2B,iBAAiB,mBAAoBL,EAEhD"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"postcss-selector-parser";const s
|
|
1
|
+
import e from"postcss-selector-parser";const s=/[ >~:+@#()]/,t="js-focus-within",o=":focus-within",creator=n=>{const r=Object.assign({preserve:!0,replaceWith:"[focus-within]",disablePolyfillReadyClass:!1},n),l=e().astSync(r.replaceWith);return s.test(r.replaceWith)?{postcssPlugin:"postcss-focus-within",Once(e,{result:s}){e.warn(s,`${r.replaceWith} is not a valid replacement since it can't be applied to single elements.`)}}:{postcssPlugin:"postcss-focus-within",prepare(){const s=new WeakSet;return{postcssPlugin:"postcss-focus-within",Rule(n,{result:a}){if(s.has(n))return;if(!n.selector.toLowerCase().includes(o))return;const i=n.selectors.flatMap(s=>{if(!s.toLowerCase().includes(o))return[s];let i;try{i=e().astSync(s)}catch(e){return n.warn(a,`Failed to parse selector : "${s}" with message: "${e instanceof Error?e.message:e}"`),s}if(void 0===i)return[s];let c=!1;if(i.walkPseudos(e=>{e.value.toLowerCase()===o&&(e.nodes&&e.nodes.length||(c=!0,e.replaceWith(l.clone({}))))}),!c)return[s];const d=i.clone();if(!r.disablePolyfillReadyClass){if(i.nodes?.[0]?.nodes?.length)for(let s=0;s<i.nodes[0].nodes.length;s++){const o=i.nodes[0].nodes[s];if("combinator"===o.type||e.isPseudoElement(o)){i.nodes[0].insertBefore(o,e.className({value:t}));break}if(s===i.nodes[0].nodes.length-1){i.nodes[0].append(e.className({value:t}));break}}return i.nodes?.[0]?.nodes&&(d.nodes[0].prepend(e.combinator({value:" "})),d.nodes[0].prepend(e.className({value:t}))),[i.toString(),d.toString()]}return[i.toString()]});i.join(",")!==n.selectors.join(",")&&(s.add(n),n.cloneBefore({selectors:i}),r.preserve||n.remove())}}}}};creator.postcss=!0;export{creator as default,creator as"module.exports"};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postcss-focus-within",
|
|
3
3
|
"description": "Use the :focus-within pseudo-selector in CSS",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "10.0.1",
|
|
5
5
|
"contributors": [
|
|
6
6
|
{
|
|
7
7
|
"name": "Antonio Laguna",
|
|
@@ -29,20 +29,13 @@
|
|
|
29
29
|
}
|
|
30
30
|
],
|
|
31
31
|
"engines": {
|
|
32
|
-
"node": ">=
|
|
32
|
+
"node": ">=20.19.0"
|
|
33
33
|
},
|
|
34
34
|
"type": "module",
|
|
35
|
-
"main": "dist/index.cjs",
|
|
36
|
-
"module": "dist/index.mjs",
|
|
37
35
|
"exports": {
|
|
38
36
|
".": {
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
"default": "./dist/index.mjs"
|
|
42
|
-
},
|
|
43
|
-
"require": {
|
|
44
|
-
"default": "./dist/index.cjs"
|
|
45
|
-
}
|
|
37
|
+
"types": "./dist/index.d.ts",
|
|
38
|
+
"default": "./dist/index.mjs"
|
|
46
39
|
},
|
|
47
40
|
"./browser": {
|
|
48
41
|
"import": "./dist/browser.mjs",
|
|
@@ -60,7 +53,7 @@
|
|
|
60
53
|
"dist"
|
|
61
54
|
],
|
|
62
55
|
"dependencies": {
|
|
63
|
-
"postcss-selector-parser": "^7.
|
|
56
|
+
"postcss-selector-parser": "^7.1.1"
|
|
64
57
|
},
|
|
65
58
|
"peerDependencies": {
|
|
66
59
|
"postcss": "^8.4"
|
package/dist/index.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("postcss-selector-parser");const s=[" ",">","~",":","+","@","#","(",")"];function isValidReplacement(e){let t=!0;for(let n=0,o=s.length;n<o&&t;n++)e.indexOf(s[n])>-1&&(t=!1);return t}const t="js-focus-within",n=":focus-within",creator=s=>{const o=Object.assign({preserve:!0,replaceWith:"[focus-within]",disablePolyfillReadyClass:!1},s),r=e().astSync(o.replaceWith);return isValidReplacement(o.replaceWith)?{postcssPlugin:"postcss-focus-within",prepare(){const s=new WeakSet;return{postcssPlugin:"postcss-focus-within",Rule(l,{result:i}){if(s.has(l))return;if(!l.selector.toLowerCase().includes(n))return;const a=l.selectors.flatMap((s=>{if(!s.toLowerCase().includes(n))return[s];let a;try{a=e().astSync(s)}catch(e){return l.warn(i,`Failed to parse selector : "${s}" with message: "${e instanceof Error?e.message:e}"`),s}if(void 0===a)return[s];let c=!1;if(a.walkPseudos((e=>{e.value.toLowerCase()===n&&(e.nodes&&e.nodes.length||(c=!0,e.replaceWith(r.clone({}))))})),!c)return[s];const d=a.clone();if(!o.disablePolyfillReadyClass){if(a.nodes?.[0]?.nodes?.length)for(let s=0;s<a.nodes[0].nodes.length;s++){const n=a.nodes[0].nodes[s];if("combinator"===n.type||e.isPseudoElement(n)){a.nodes[0].insertBefore(n,e.className({value:t}));break}if(s===a.nodes[0].nodes.length-1){a.nodes[0].append(e.className({value:t}));break}}return a.nodes?.[0]?.nodes&&(d.nodes[0].prepend(e.combinator({value:" "})),d.nodes[0].prepend(e.className({value:t}))),[a.toString(),d.toString()]}return[a.toString()]}));a.join(",")!==l.selectors.join(",")&&(s.add(l),l.cloneBefore({selectors:a}),o.preserve||l.remove())}}}}:{postcssPlugin:"postcss-focus-within",Once(e,{result:s}){e.warn(s,`${o.replaceWith} is not a valid replacement since it can't be applied to single elements.`)}}};creator.postcss=!0,module.exports=creator;
|