From 074300021629a569c89337d1d0a67c45450d748b Mon Sep 17 00:00:00 2001 From: Lucas Rainett Date: Sat, 16 Nov 2019 10:19:04 +1300 Subject: [PATCH] add hook to allow users to have vendor prefixing --- src/index.js | 4 +++- test/cxs.js | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 9a8312e0..796c875b 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,6 @@ let cache = {} let prefix = 'x' +let hook = (val) => val; const rules = [] let insert = rule => rules.push(rule) const hyph = s => s.replace(/[A-Z]|^ms/g, '-$&').toLowerCase() @@ -19,7 +20,7 @@ const parse = (obj, child = '', media) => const _key = key + val + child + media if (cache[_key]) return cache[_key] const className = prefix + (rules.length).toString(36) - insert(mx(rx(className + noAnd(child), key, val), media)) + insert(hook(mx(rx(className + noAnd(child), key, val), media))) cache[_key] = className return className }) @@ -40,6 +41,7 @@ cxs.reset = () => { } cxs.prefix = val => (prefix = val) +cxs.hook = val => (hook = val) if (typeof document !== 'undefined') { const sheet = document.head.appendChild( diff --git a/test/cxs.js b/test/cxs.js index 456af946..9bee3cbf 100644 --- a/test/cxs.js +++ b/test/cxs.js @@ -130,3 +130,11 @@ test('uses custom prefix', t => { cxs({ color: 'tomato' }) t.is(cxs.css(), '._cxs0{color:tomato}') }) + +test('uses custom hook', t => { + const fakeAutoprefixer = (val) => val.split("grid").join("-ms-grid"); + cxs.hook(fakeAutoprefixer); + + cxs({ display: 'grid' }) + t.is(cxs.css(), '.x0{display:-ms-grid}') +})