{"version":3,"file":"jss-plugin-rule-value-function.js","sources":["../../../node_modules/tiny-warning/dist/tiny-warning.esm.js","../src/index.js"],"sourcesContent":["var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import warning from 'tiny-warning'\nimport {createRule} from 'jss'\n\n// A symbol replacement.\nlet now = Date.now()\nconst fnValuesNs = `fnValues${now}`\nconst fnRuleNs = `fnStyle${++now}`\n\nconst functionPlugin = () => ({\n onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null\n const rule = createRule(name, {}, options)\n rule[fnRuleNs] = decl\n return rule\n },\n\n onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style\n\n const fnValues = {}\n for (const prop in style) {\n const value = style[prop]\n if (typeof value !== 'function') continue\n delete style[prop]\n fnValues[prop] = value\n }\n rule[fnValuesNs] = fnValues\n return style\n },\n\n onUpdate(data, rule, sheet, options) {\n const styleRule = rule\n\n const fnRule = styleRule[fnRuleNs]\n\n // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {}\n\n if (process.env.NODE_ENV === 'development') {\n for (const prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n warning(false, '[JSS] Function values inside function rules are not supported.')\n break\n }\n }\n }\n }\n\n const fnValues = styleRule[fnValuesNs]\n\n // If we have a fn values map, it is a rule with function values.\n if (fnValues) {\n for (const prop in fnValues) {\n styleRule.prop(prop, fnValues[prop](data), options)\n }\n }\n }\n})\n\nexport default functionPlugin\n"],"names":["now","Date","fnValuesNs","fnRuleNs","functionPlugin","onCreateRule","name","decl","options","rule","createRule","onProcessStyle","style","fnValues","prop","value","onUpdate","data","sheet","styleRule","fnRule","warning"],"mappings":";;;;;;EACA,SAAS,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE;EACrC,EAAqB;EACrB,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,OAAO;EACb,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC;AACrC;EACA,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;EACxC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACzB,KAAK;AACL;EACA,IAAI,IAAI;EACR,MAAM,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;EACxB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;EAClB,GAAG;EACH;;ECbA,IAAIA,GAAG,GAAGC,IAAI,CAACD,GAAL,EAAV;EACA,IAAME,UAAU,gBAAcF,GAA9B;EACA,IAAMG,QAAQ,eAAa,EAAEH,GAA7B;;MAEMI,cAAc,GAAG,SAAjBA,cAAiB;EAAA,SAAO;EAC5BC,IAAAA,YAD4B,wBACfC,IADe,EACTC,IADS,EACHC,OADG,EACM;EAChC,UAAI,OAAOD,IAAP,KAAgB,UAApB,EAAgC,OAAO,IAAP;EAChC,UAAME,IAAI,GAAGC,cAAU,CAACJ,IAAD,EAAO,EAAP,EAAWE,OAAX,CAAvB;EACAC,MAAAA,IAAI,CAACN,QAAD,CAAJ,GAAiBI,IAAjB;EACA,aAAOE,IAAP;EACD,KAN2B;EAQ5BE,IAAAA,cAR4B,0BAQbC,KARa,EAQNH,IARM,EAQA;EAC1B;EACA;EACA;EACA;EACA,UAAIP,UAAU,IAAIO,IAAd,IAAsBN,QAAQ,IAAIM,IAAtC,EAA4C,OAAOG,KAAP;EAE5C,UAAMC,QAAQ,GAAG,EAAjB;;EACA,WAAK,IAAMC,IAAX,IAAmBF,KAAnB,EAA0B;EACxB,YAAMG,KAAK,GAAGH,KAAK,CAACE,IAAD,CAAnB;EACA,YAAI,OAAOC,KAAP,KAAiB,UAArB,EAAiC;EACjC,eAAOH,KAAK,CAACE,IAAD,CAAZ;EACAD,QAAAA,QAAQ,CAACC,IAAD,CAAR,GAAiBC,KAAjB;EACD;;EACDN,MAAAA,IAAI,CAACP,UAAD,CAAJ,GAAmBW,QAAnB;EACA,aAAOD,KAAP;EACD,KAxB2B;EA0B5BI,IAAAA,QA1B4B,oBA0BnBC,IA1BmB,EA0BbR,IA1Ba,EA0BPS,KA1BO,EA0BAV,OA1BA,EA0BS;EACnC,UAAMW,SAAS,GAAGV,IAAlB;EAEA,UAAMW,MAAM,GAAGD,SAAS,CAAChB,QAAD,CAAxB,CAHmC;EAMnC;;EACA,UAAIiB,MAAJ,EAAY;EACV;EACA;EACAD,QAAAA,SAAS,CAACP,KAAV,GAAkBQ,MAAM,CAACH,IAAD,CAAN,IAAgB,EAAlC;;EAEA,QAA4C;EAC1C,eAAK,IAAMH,IAAX,IAAmBK,SAAS,CAACP,KAA7B,EAAoC;EAClC,gBAAI,OAAOO,SAAS,CAACP,KAAV,CAAgBE,IAAhB,CAAP,KAAiC,UAArC,EAAiD;EAC/C,eAAAO,OAAO,CAAC,KAAD,EAAQ,gEAAR,CAAP;EACA;EACD;EACF;EACF;EACF;;EAED,UAAMR,QAAQ,GAAGM,SAAS,CAACjB,UAAD,CAA1B,CAtBmC;;EAyBnC,UAAIW,QAAJ,EAAc;EACZ,aAAK,IAAMC,KAAX,IAAmBD,QAAnB,EAA6B;EAC3BM,UAAAA,SAAS,CAACL,IAAV,CAAeA,KAAf,EAAqBD,QAAQ,CAACC,KAAD,CAAR,CAAeG,IAAf,CAArB,EAA2CT,OAA3C;EACD;EACF;EACF;EAxD2B,GAAP;EAAA;;;;;;;;;;"}