UNPKG

cssobj-core

Version:

Generate Virtual CSS middle format, support for all cssobj functions and plugins.

1 lines 4.52 kB
var cssobj_core=function(){"use strict";function r(r){return!isNaN(parseFloat(r))&&isFinite(r)}function e(r,e){return{}.hasOwnProperty.call(r,e)}function n(r,n){r=r||{};for(var t in n)!e(n,t)||t in r||(r[t]=n[t]);return r}function t(r,n,t){r[n]=r[n]||{};for(var a=arguments,i=2;i<a.length;i++){t=a[i];for(var o in t)e(t,o)&&(r[n][o]=t[o])}return r[n]}function a(r,e,n,t,a){r[e]=e in r?Array.isArray(r[e])?r[e]:[r[e]]:[],a&&r[e].indexOf(n)>-1||(t?r[e].unshift(n):r[e].push(n))}function i(r,e,n,t,i){for(var o,f,u=r,c=[];u;){if(e(u)){if(t)for(o=0;o<c.length;o++)a(u,t,c[o],!1,!0);c[0]&&i&&(c[0][i]=u),c.unshift(u)}u=u.parent}for(o=0;o<c.length;o++)f=c[o],c[o]=n?f[n]:f;return c}function o(r,e){if(r.indexOf(e)<0)return[r];for(var n,t=0,a=0,i="",o=0,f=[];n=r.charAt(t);t++)i?n==i&&(i=""):(('"'==n||"'"==n)&&(i=n),("("==n||"["==n)&&a++,(")"==n||"]"==n)&&a--,a||n!=e||(f.push(r.substring(o,t)),o=t+1));return f.concat(r.substring(o))}function f(r){return"string"==typeof r&&r||"number"==typeof r&&isFinite(r)}function u(r){return b.call(r)==V||b.call(r)==w}function c(r){return"function"==typeof r}function l(r,n,i,f){if(f&&(n.nodes=[],n.ref={},i&&(n.diff={})),i=i||{},i.obj=r,b.call(r)==w){var p=[];i.at=j.exec(i.key);for(var v=0;v<r.length;v++){var h=i[v],g=l(r[v],n,i[v]||{parent:i,src:r,parentNode:p,index:v});n.diff&&h!=g&&a(n.diff,g?"added":"removed",g||h),p.push(g)}return p}r[y]&&(n.ref[r[y]]=i);var T=i.prevVal=i.lastVal;if(m in r){var V=c(r[m])?r[m](!i.disabled,i,n):r[m];if(!V)return;i.test=V}var k=i.children=i.children||{};i.lastRaw=i.rawVal||{},i.lastVal={},i.rawVal={},i.prop={},i.diff={};var O=0|r[x],_=[],E=function(r,e,i){var f=e in k,u=t(k,e,i);u.selPart=u.selPart||o(e,",");var c=l(r,n,u);c&&(k[e]=c),T&&(f?!c&&a(n.diff,"removed",k[e]):c&&a(n.diff,"added",c)),c||delete i.parent.children[e]};"selText"in i||s(i,n);for(var N in r)if(e(r,N))if(!u(r[N])||b.call(r[N])==w&&!u(r[N][0])){if("@"==N[0]){E([].concat(r[N]).reduce(function(r,e){return r[e]=";",r},{}),N,{parent:i,src:r,key:N,inline:!0});continue}var A=function(e){e!=m&&d(i,r,e,n)};O?_.push([A,N]):A(N)}else E(r[N],N,{parent:i,src:r,key:N});if(T){for(N in k)N in r||(a(n.diff,"removed",k[N]),delete k[N]);var F=function(){var r=P(i.lastVal),e=P(T).filter(function(e){return r.indexOf(e)<0});e.length&&(i.diff.removed=e),P(i.diff).length&&a(n.diff,"changed",i)};O?_.push([F,null]):F()}return O&&a(n,"_order",{order:O,func:_}),n.nodes.push(i),i}function s(r,e){var n=e.config,t=i(r,function(r){return r.key}).pop();if(r.parentRule=i(r.parent,function(r){return r.type==T}).pop()||null,t){var a,f=t.key,u=f.match(k);u?(r.type=T,r.at=u.pop(),a="media"==r.at,a&&(r.selPart=o(f.replace(k,""),",")),r.groupText=a?"@"+r.at+p(i(r,function(r){return r.type==T},"selPart","selChild","selParent"),""," and"):f,r.selText=i(r,function(r){return r.selText&&!r.at},"selText").pop()||""):j.test(f)?(r.type="at",r.selText=f):(r.selText=""+p(i(t,function(r){return r.selPart&&!r.at},"selPart","selChild","selParent"),""," ",!0),n),r.selText=v(n,"selector",r.selText,r,e),r.selText&&(r.selTextPart=o(r.selText,",")),r!==t&&(r.ruleNode=t)}}function d(n,t,i,o,l){var s=n.prevVal,p=n.lastVal,h=r(i)?l:i,g=n.lastRaw[h],y=s&&s[h],x={node:n,result:o};g&&(x.raw=g[0]),![].concat(t[i]).forEach(function(r){x.cooked=y,x.raw=g=c(r)?r(x):r;var t=v(o.config,"value",g,h,n,o,l);if(u(t))for(var i in t)e(t,i)&&d(n,t,i,o,h);else a(n.rawVal,h,g,!0),f(t)&&(a(n.prop,h,t,!0),y=p[h]=t)}),s&&(h in s?s[h]!=p[h]&&a(n.diff,"changed",h):a(n.diff,"added",h))}function p(r,e,n,t){return r.length?r[0].reduce(function(a,i){var f,u=e?e+n:e;return t?(f=o(i,"&"),u=f.length>1?f.join(e):u+i):u+=i,a.concat(p(r.slice(1),u,n,t))},[]):e}function v(r,e){var n=[].slice.call(arguments,2),t=r.plugins;return[].concat(t).reduce(function(r,t){return t[e]?t[e].apply(null,[r].concat(n)):r},n.shift())}function h(r){r._order&&(r._order.sort(function(r,e){return r.order-e.order}).forEach(function(r){r.func.forEach(function(r){r[0](r[1])})}),delete r._order)}function g(r){return r=n(r,{plugins:[],intros:[]}),function(e,n){var a=function(e,n){return arguments.length>1&&(i.state=n||{}),e&&(i.obj=c(e)?e():e),i.root=l(t({},"",i.intro,i.obj),i,i.root,!0),h(i),i=v(r,"post",i),c(r.onUpdate)&&r.onUpdate(i),i},i={intro:{},update:a,config:r};return![].concat(r.intros).forEach(function(r){t(i,"intro",c(r)?r(i):r)}),a(e,n||r.state),i}}var y="$id",x="$order",m="$test",T="group",P=Object.keys,b={}.toString,w=b.call([]),V=b.call({}),k=/^@(media|document|supports|page|[\w-]*keyframes)/i,j=/^\s*@/i;return g}();