lesshat.less 112 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200
  1. // LESS Hat 1.1.1
  2. // LESSHat.com
  3. // From creators of CSSHat.com
  4. // 2012
  5. // Petr Brzek & Jan Kuca
  6. // @GlobalConfig
  7. // .animation
  8. // .animation-delay
  9. // .animation-direction
  10. // .animation-duration
  11. // .animation-fill-mode
  12. // .animation-timing-function
  13. // .animation-iteration-count
  14. // .animation-name
  15. // .animation-play-state
  16. // .keyframes - in future
  17. // .appearance
  18. // .backface-visibility
  19. // .background-clip
  20. // .background-image
  21. // .background-origin
  22. // .background-size
  23. // .border-radius
  24. // .border-top-left-radius
  25. // .border-top-right-radius
  26. // .border-bottom-left-radius
  27. // .border-bottom-right-radius
  28. // .border-image
  29. // .box-shadow
  30. // .box-sizing
  31. // .columns
  32. // .column-count
  33. // .column-gap
  34. // .column-rule
  35. // .column-width
  36. // .font-face
  37. // .gradient
  38. // .opacity
  39. // .perspective
  40. // .perspective-origin
  41. // .size
  42. // .transform
  43. // .transform-origin
  44. // .transform-style
  45. // .translate
  46. // .translate3d
  47. // .translateX
  48. // .translateY
  49. // .translateZ
  50. // .scale
  51. // .scale3d
  52. // .scaleX
  53. // .scaleY
  54. // .scaleZ
  55. // .rotate
  56. // .rotate3d
  57. // .rotateX
  58. // .rotateY
  59. // .rotateZ
  60. // .skew
  61. // .skewX
  62. // .skewY
  63. // .transition
  64. // .transition-property
  65. // .transition-duration
  66. // .transition-timing-function
  67. // .transition-delay
  68. // .user-select
  69. // DEPRECATED mixins
  70. // @GlobalConfig
  71. // Config supported browsers for your project
  72. @w3c: true; // Unprefixed W3C syntax
  73. @webkit: true; // Chrome 7+, Safari 5+, iOS5, Android
  74. @moz: true; // Firefox 4+
  75. @opera: true; // Opera 10.5+
  76. @ms: true; // IE 10+
  77. // Signals
  78. @webkitSignal: 1;
  79. @mozSignal: 2;
  80. @operaSignal: 3;
  81. @msSignal: 4;
  82. @w3cSignal: 5;
  83. // .animation
  84. .animation(...){
  85. // Local config for disabling properties
  86. @w3cLocal: true; // Unprefixed W3C syntax
  87. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  88. @mozLocal: true; // Firefox 4+
  89. @operaLocal: true; // Opera 10.5+
  90. @msLocal: true; // IE 10+
  91. @processing: ~`(function(){ var arg = "@{arguments}".replace("[","").replace("]","") || "none"; if( !/^\w*([ X])/.test(arg) ) { arg = arg.replace(/,/g,"") } return arg; })()`;
  92. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  93. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation: @processing;}
  94. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation: @processing;}
  95. .inception (@signal, @arguments) when (@signal = 3) { -o-animation: @processing;}
  96. .inception (@signal, @arguments) when (@signal = 4) { -ms-animation: @processing;}
  97. .inception (@signal, @arguments) when (@signal = 5) { animation: @processing;}
  98. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  99. .inception(@signal, @arguments);
  100. }
  101. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  102. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  103. // -- this comment must be here because of LESS bug
  104. .result(@arguments, @mozSignal, @moz, @mozLocal);
  105. // --
  106. .result(@arguments, @operaSignal, @opera, @operaLocal);
  107. // --
  108. .result(@arguments, @msSignal, @ms, @msLocal);
  109. // --
  110. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  111. }
  112. // element{ .animation(nameAnimation 2s linear alternate anim 3s linear alternate ); }
  113. // .animation-delay
  114. .animation-delay(...){
  115. // Local config for disabling properties
  116. @w3cLocal: true; // Unprefixed W3C syntax
  117. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  118. @mozLocal: true; // Firefox 4+
  119. @operaLocal: true; // Opera 10.5+
  120. @msLocal: true; // IE 10+
  121. @processing: ~`(function(){ var arg = "@{arguments}" || "0"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  122. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  123. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-delay: @processing;}
  124. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-delay: @processing;}
  125. .inception (@signal, @arguments) when (@signal = 3) { -o-animation-delay: @processing;}
  126. .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-delay: @processing;}
  127. .inception (@signal, @arguments) when (@signal = 5) { animation-delay: @processing;}
  128. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  129. .inception(@signal, @arguments);
  130. }
  131. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  132. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  133. // -- this comment must be here because of LESS bug
  134. .result(@arguments, @mozSignal, @moz, @mozLocal);
  135. // --
  136. .result(@arguments, @operaSignal, @opera, @operaLocal);
  137. // --
  138. .result(@arguments, @msSignal, @ms, @msLocal);
  139. // --
  140. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  141. }
  142. // element{ .animation-delay(1s); }
  143. // element{ .animation-delay(750ms, 2s, 3s); } // For multiple animation-direction
  144. // .animation-direction
  145. .animation-direction(...){
  146. // Local config for disabling properties
  147. @w3cLocal: true; // Unprefixed W3C syntax
  148. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  149. @mozLocal: true; // Firefox 4+
  150. @operaLocal: true; // Opera 10.5+
  151. @msLocal: true; // IE 10+
  152. @processing: ~`(function(){ var arg = "@{arguments}" || "normal"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  153. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  154. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-direction: @processing;}
  155. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-direction: @processing;}
  156. .inception (@signal, @arguments) when (@signal = 3) { -o-animation-direction: @processing;}
  157. .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-direction: @processing;}
  158. .inception (@signal, @arguments) when (@signal = 5) { animation-direction: @processing;}
  159. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  160. .inception(@signal, @arguments);
  161. }
  162. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  163. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  164. // -- this comment must be here because of LESS bug
  165. .result(@arguments, @mozSignal, @moz, @mozLocal);
  166. // --
  167. .result(@arguments, @operaSignal, @opera, @operaLocal);
  168. // --
  169. .result(@arguments, @msSignal, @ms, @msLocal);
  170. // --
  171. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  172. }
  173. // element{ .animation-direction(); }
  174. // element{ .animation-direction(normal, alternate); }
  175. // .animation-duration
  176. .animation-duration(...){
  177. // Local config for disabling properties
  178. @w3cLocal: true; // Unprefixed W3C syntax
  179. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  180. @mozLocal: true; // Firefox 4+
  181. @operaLocal: true; // Opera 10.5+
  182. @msLocal: true; // IE 10+
  183. @processing: ~`(function(){ var arg = "@{arguments}" || "0"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  184. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  185. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-duration: @processing;}
  186. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-duration: @processing;}
  187. .inception (@signal, @arguments) when (@signal = 3) { -o-animation-duration: @processing;}
  188. .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-duration: @processing;}
  189. .inception (@signal, @arguments) when (@signal = 5) { animation-duration: @processing;}
  190. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  191. .inception(@signal, @arguments);
  192. }
  193. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  194. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  195. // -- this comment must be here because of LESS bug
  196. .result(@arguments, @mozSignal, @moz, @mozLocal);
  197. // --
  198. .result(@arguments, @operaSignal, @opera, @operaLocal);
  199. // --
  200. .result(@arguments, @msSignal, @ms, @msLocal);
  201. // --
  202. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  203. }
  204. // element{ .animation-duration(2s); }
  205. // .animation-fill-mode
  206. .animation-fill-mode(...){
  207. // Local config for disabling properties
  208. @w3cLocal: true; // Unprefixed W3C syntax
  209. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  210. @mozLocal: true; // Firefox 4+
  211. @operaLocal: true; // Opera 10.5+
  212. @msLocal: true; // IE 10+
  213. @processing: ~`(function(){ var arg = "@{arguments}" || "none"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  214. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  215. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-fill-mode: @processing;}
  216. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-fill-mode: @processing;}
  217. .inception (@signal, @arguments) when (@signal = 3) { -o-animation-fill-mode: @processing;}
  218. .inception (@signal, @arguments) when (@signal = 5) { animation-fill-mode: @processing;}
  219. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  220. .inception(@signal, @arguments);
  221. }
  222. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  223. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  224. // -- this comment must be here because of LESS bug
  225. .result(@arguments, @mozSignal, @moz, @mozLocal);
  226. // --
  227. .result(@arguments, @operaSignal, @opera, @operaLocal);
  228. // --
  229. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  230. }
  231. // element{ .animation-fill-mode(forwards); }
  232. // .animation-timing-function
  233. .animation-timing-function(...){
  234. // Local config for disabling properties
  235. @w3cLocal: true; // Unprefixed W3C syntax
  236. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  237. @mozLocal: true; // Firefox 4+
  238. @operaLocal: true; // Opera 10.5+
  239. @msLocal: true; // IE 10+
  240. @processing: ~`(function(){ var arg = "@{arguments}" || "ease"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  241. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  242. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-timing-function: @processing;}
  243. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-timing-function: @processing;}
  244. .inception (@signal, @arguments) when (@signal = 3) { -o-animation-timing-function: @processing;}
  245. .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-timing-function: @processing;}
  246. .inception (@signal, @arguments) when (@signal = 5) { animation-timing-function: @processing;}
  247. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  248. .inception(@signal, @arguments);
  249. }
  250. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  251. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  252. // -- this comment must be here because of LESS bug
  253. .result(@arguments, @mozSignal, @moz, @mozLocal);
  254. // --
  255. .result(@arguments, @operaSignal, @opera, @operaLocal);
  256. // --
  257. .result(@arguments, @msSignal, @ms, @msLocal);
  258. // --
  259. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  260. }
  261. // element{ .animation-timing-function(ease-in-out); }
  262. // .animation-iteration-count
  263. .animation-iteration-count(...){
  264. // Local config for disabling properties
  265. @w3cLocal: true; // Unprefixed W3C syntax
  266. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  267. @mozLocal: true; // Firefox 4+
  268. @operaLocal: true; // Opera 10.5+
  269. @msLocal: true; // IE 10+
  270. @processing: ~`(function(){ var arg = "@{arguments}" || "0"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  271. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  272. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-iteration-count: @processing;}
  273. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-iteration-count: @processing;}
  274. .inception (@signal, @arguments) when (@signal = 3) { -o-animation-iteration-count: @processing;}
  275. .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-iteration-count: @processing;}
  276. .inception (@signal, @arguments) when (@signal = 5) { animation-iteration-count: @processing;}
  277. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  278. .inception(@signal, @arguments);
  279. }
  280. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  281. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  282. // -- this comment must be here because of LESS bug
  283. .result(@arguments, @mozSignal, @moz, @mozLocal);
  284. // --
  285. .result(@arguments, @operaSignal, @opera, @operaLocal);
  286. // --
  287. .result(@arguments, @msSignal, @ms, @msLocal);
  288. // --
  289. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  290. }
  291. // element{ .animation-iteration-count(3); }
  292. // .animation-name
  293. .animation-name(...){
  294. // Local config for disabling properties
  295. @w3cLocal: true; // Unprefixed W3C syntax
  296. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  297. @mozLocal: true; // Firefox 4+
  298. @operaLocal: true; // Opera 10.5+
  299. @msLocal: true; // IE 10+
  300. @processing: ~`(function(){ var arg = "@{arguments}" || "none"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  301. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  302. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-name: @processing;}
  303. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-name: @processing;}
  304. .inception (@signal, @arguments) when (@signal = 3) { -o-animation-name: @processing;}
  305. .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-name: @processing;}
  306. .inception (@signal, @arguments) when (@signal = 5) { animation-name: @processing;}
  307. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  308. .inception(@signal, @arguments);
  309. }
  310. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  311. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  312. // -- this comment must be here because of LESS bug
  313. .result(@arguments, @mozSignal, @moz, @mozLocal);
  314. // --
  315. .result(@arguments, @operaSignal, @opera, @operaLocal);
  316. // --
  317. .result(@arguments, @msSignal, @ms, @msLocal);
  318. // --
  319. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  320. }
  321. // element{ .animation-name(myReallyCoolAnimationName); }
  322. // .animation-play-state
  323. .animation-play-state(...){
  324. // Local config for disabling properties
  325. @w3cLocal: true; // Unprefixed W3C syntax
  326. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  327. @mozLocal: true; // Firefox 4+
  328. @operaLocal: true; // Opera 10.5+
  329. @msLocal: true; // IE 10+
  330. @processing: ~`(function(){ var arg = "@{arguments}" || "running"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  331. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  332. .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-play-state: @processing;}
  333. .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-play-state: @processing;}
  334. .inception (@signal, @arguments) when (@signal = 3) { -o-animation-play-state: @processing;}
  335. .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-play-state: @processing;}
  336. .inception (@signal, @arguments) when (@signal = 5) { animation-play-state: @processing;}
  337. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  338. .inception(@signal, @arguments);
  339. }
  340. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  341. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  342. // -- this comment must be here because of LESS bug
  343. .result(@arguments, @mozSignal, @moz, @mozLocal);
  344. // --
  345. .result(@arguments, @operaSignal, @opera, @operaLocal);
  346. // --
  347. .result(@arguments, @msSignal, @ms, @msLocal);
  348. // --
  349. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  350. }
  351. // element{ .animation-play-state(paused); }
  352. // .appearance
  353. .appearance(@argument:none){
  354. // Local config for disabling properties
  355. @w3cLocal: true; // Unprefixed W3C syntax
  356. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  357. @mozLocal: true; // Firefox 4+
  358. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  359. .inception (@signal, @argument) when (@signal = 1) { -webkit-appearance: @argument;}
  360. .inception (@signal, @argument) when (@signal = 2) { -moz-appearance: @argument;}
  361. .inception (@signal, @argument) when (@signal = 5) { appearance: @argument;}
  362. .inception (@signal, @argument) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  363. .inception(@signal, @argument);
  364. }
  365. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  366. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  367. // -- this comment must be here because of LESS bug
  368. .result(@arguments, @mozSignal, @moz, @mozLocal);
  369. // --
  370. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  371. }
  372. // element{ .appearance(button); }
  373. // .backface-visibility
  374. .backface-visibility(@argument:visible){
  375. // Local config for disabling properties
  376. @w3cLocal: true; // Unprefixed W3C syntax
  377. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  378. @mozLocal: true; // Firefox 4+
  379. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  380. .inception (@signal, @argument) when (@signal = 1) { -webkit-backface-visibility: @argument;}
  381. .inception (@signal, @argument) when (@signal = 2) { -moz-backface-visibility: @argument;}
  382. .inception (@signal, @argument) when (@signal = 5) { backface-visibility: @argument;}
  383. .inception (@signal, @argument) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  384. .inception(@signal, @argument);
  385. }
  386. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  387. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  388. // -- this comment must be here because of LESS bug
  389. .result(@arguments, @mozSignal, @moz, @mozLocal);
  390. // --
  391. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  392. }
  393. // element{ .backface-visibility(hidden); }
  394. // .background-clip
  395. .background-clip(@arguments:border-box){
  396. // Local config for disabling properties
  397. @w3cLocal: true; // Unprefixed W3C syntax
  398. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  399. @mozLocal: true; // Firefox 4+
  400. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  401. .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-clip: @arguments;}
  402. .inception (@signal, @arguments) when (@signal = 2) { -moz-background-clip: @arguments;}
  403. .inception (@signal, @arguments) when (@signal = 5) { background-clip: @arguments;}
  404. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  405. .inception(@signal, @arguments);
  406. }
  407. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  408. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  409. // -- this comment must be here because of LESS bug
  410. .result(@arguments, @mozSignal, @moz, @mozLocal);
  411. // --
  412. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  413. }
  414. // element{ .background-clip(padding-box); }
  415. // .background-image
  416. .background-image(...){
  417. // Local config for disabling properties
  418. @svg: true; // SVG gradient for IE9
  419. @mozLocal: true; // Firefox 4+
  420. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5+, Android
  421. @operaLocal: true; // Opera 10.5+
  422. @w3cLocal: true; // Unprefixed W3C syntax
  423. @backgroundSVG: ~`(function(){function K(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c,d,e,f,g,h,i,j,k=0,l=0,m="",n=[];if(!a)return a;do c=a.charCodeAt(k++),d=a.charCodeAt(k++),e=a.charCodeAt(k++),j=c<<16|d<<8|e,f=j>>18&63,g=j>>12&63,h=j>>6&63,i=j&63,n[l++]=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);while(k<a.length);m=n.join("");var o=a.length%3;return(o?m.slice(0,o-3):m)+"===".slice(o||3)}String.prototype.trim===undefined&&(String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")});var a="@{arguments}",b=null,c=!0,d=a.split(/,(?=\s*(?:linear|radial))/g),e=d.length,f=/top/,g=/right/,h=/bottom/,i=/left/,j=/to\s*top/,k=/to\s*right/,l=/to\s*bottom/,m=/to\s*left/,n=/45deg/,o=/-45deg/,p=/\d*deg/;for(var q=0;q<e;q++){if(/linear/.test(d[q])){d[q]=d[q].replace(/linear-gradient\s*\(/,'<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none">');if(f.test(d[q])&&!j.test(d[q])||l.test(d[q])||/180deg/.test(d[q])){var r=null;l.test(d[q])?r=l:/180deg/.test(d[q])?r=/180deg/:r=f,d[q]=d[q].replace(r,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="0%" y2="100%">')}else if(g.test(d[q])&&!k.test(d[q])||m.test(d[q])||/270deg/.test(d[q])){var r=null;m.test(d[q])?r=m:/270deg/.test(d[q])?r=/270deg/:r=g,d[q]=d[q].replace(r,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="100%" y1="0%" x2="0%" y2="0%">')}else if(h.test(d[q])&&!l.test(d[q])||j.test(d[q])||/[^\d]0deg/.test(d[q])){var r=null;j.test(d[q])?r=j:/0deg/.test(d[q])?r=/0deg/:r=h,d[q]=d[q].replace(r,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="100%" x2="0%" y2="0%">')}else if(i.test(d[q])&&!m.test(d[q])||k.test(d[q])||/90deg/.test(d[q])){var r=null;k.test(d[q])?r=k:/90deg/.test(d[q])?r=/90deg/:r=i,d[q]=d[q].replace(r,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="0%">')}else n.test(d[q])&&!o.test(d[q])?d[q]=d[q].replace(n,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="100%" x2="100%" y2="0%">'):o.test(d[q])?d[q]=d[q].replace(o,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="100%">'):c=!1}try{"".trim(),b=!0}catch(s){b=!1}b&&(d[q]=d[q].trim());if(/linear/.test(d[q])||/radial/.test(d[q])){d[q]=d[q].slice(0,-1),d[q]="url(data:image/svg+xml;base64--"+d[q]+'</linearGradient><rect x="0" y="0" width="1" height="1" fill="url(***)" /></svg>)';var t=d.join("@@@"),u=t.match(/rgba?\(\d+,\s*\d+,\s*\d+,\s*(?:0|1|\.\d+|0\.\d+)\)\s*\d*%*/g)||0,v=t.match(/hsla?\(\d+,\s*\d+%,\s*\d+%,\s*(?:0|1|\.\d+|0\.\d+)\)\s*\d*%*/g)||0,w=[],x=[];for(var y=0;y<u.length;y++)w[y]=u[y].replace(/,/g,"--");for(var z=0;z<v.length;z++)x[z]=v[z].replace(/,/g,"--");for(var A=0;A<u.length;A++)t=t.replace(u[A],w[A]);for(var B=0;B<v.length;B++)t=t.replace(v[B],x[B]);var C=t.split(","),D=0;for(var E=0;E<C.length;E++){C[E]=C[E].replace(/(#\w{3,6})\s*(\d*.?\d*%)?/g,'<stop offset="$2" stop-color="$1" stop-opacity="1"/>').replace(/(rgba?\(\d+--\s*\d+--\s*\d+--\s*(0|1|\.\d+|0\.\d+)\))\s*(\d*.?\d*%)*/g,'<stop offset="$3" stop-color="$1" stop-opacity="$2"/>').replace(/rgba/g,"rgb").replace(/(hsla?\(\d+--\s*\d+%--\s*\d+%--\s*(0|1|\.\d+|0\.\d+)\))\s*(\d*.?\d*%)*/g,'<stop offset="$3" stop-color="$1" stop-opacity="$2"/>').replace(/hsla/g,"hsl").replace(/((?:aqua|black|blue|fuchsia|gray|grey|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow))\s*(\d*%)*/g,'<stop offset="$2" stop-color="$1" stop-opacity="1"/>').replace(/\*\*\*/,"#grad-ucgg-generated");try{"".trim(),b=!0}catch(s){b=!1}b&&(C[E]=C[E].trim());if(/offset=""/g.test(C[E])){var F=C.length-2,G=Math.round(100/F)*D;console.log(G);var H='offset="'+G+'%"';C[E]=C[E].replace(/offset=""/,H),D++}}C=C.toString().replace(/,/g,"").replace(/--/g,",").replace(/(rgb?\(\d+,\s*\d+,\s*\d+),\s*(?:0|1|\.\d+|0\.\d+)\)/g,"$1)").replace(/(hsl?\(\d+,\s*\d+%,\s*\d+%),\s*(?:0|1|\.\d+|0\.\d+)\)/g,"$1)")}}/radial/.test(C)&&(/((ellipse).*(center)|(circle).*(center))/g.test(C)?C=C.replace(/<\/linearGradient>/g,"</radialGradient>").replace(/radial-gradient[^<]+/g,'<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none"><radialGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" cx="50%" cy="50%" r="75%">').replace(/<rect x=\S+\d\S+ y=\S+\d\S+ width=\S+\d\S+ height=\S+\d\S+ fill=\S+\w\S+ \/>/g,'<rect x="-50" y="-50" width="101" height="101" fill="url(#grad-ucgg-generated)" />'):C=!1);var I=null;try{C=C.split("@@@");var J=0;for(J;J<C.length;J++)I=C[J].match(/<\?xml.*<\/svg>/),I=K(I.join("")),C[J]=C[J].replace(/(<\?xml.*<\/svg>)/,I)}catch(s){}return c?C:C=!1,C?C.toString():C})()`;
  424. @backgroundMoz: ~`(function(){var a,b,c,d,e,f,g,h,i,j,k;a="@{arguments}",c=null,d=a.split(/,(?=\s*(?:linear|radial))/g),e=d.length,k=/to\s*top/,j=/to\s*right/,h=/to\s*bottom/,i=/to\s*left/,b=/\d*deg/,f=0;while(f<e){/linear/.test(d[f])?(d[f]=d[f].replace(/linear-gradient/,"-moz-linear-gradient"),k.test(d[f])?d[f]=d[f].replace(k,"bottom"):j.test(d[f])?d[f]=d[f].replace(j,"left"):h.test(d[f])?d[f]=d[f].replace(h,"top"):i.test(d[f])?d[f]=d[f].replace(i,"right"):b.test(d[f])&&(g=d[f].match(/\d*deg/),g=(parseInt(g)-90)*-1+"deg",d[f]=d[f].replace(b,g))):d[f]=d[f].replace(/radial-gradient/,"-moz-radial-gradient").replace(/,\s* \d*(px|%) \d*(px|%)/,", circle").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");try{"".trim(),c=!0}catch(l){c=!1}c&&(d[f]=d[f].trim()),f++}return d.toString().replace(/\[/g,"").replace(/\]/g,"")}())`;
  425. @backgroundWebkit: ~`(function(){var a,b,c,d,e,f,g,h,i,j,k;a="@{arguments}",c=null,d=a.split(/,(?=\s*(?:linear|radial))/g),e=d.length,k=/to\s*top/,j=/to\s*right/,h=/to\s*bottom/,i=/to\s*left/,b=/\d*deg/,f=0;while(f<e){/linear/.test(d[f])?(d[f]=d[f].replace(/linear-gradient/,"-webkit-linear-gradient"),k.test(d[f])?d[f]=d[f].replace(k,"bottom"):j.test(d[f])?d[f]=d[f].replace(j,"left"):h.test(d[f])?d[f]=d[f].replace(h,"top"):i.test(d[f])?d[f]=d[f].replace(i,"right"):b.test(d[f])&&(g=d[f].match(/\d*deg/),g=(parseInt(g)-90)*-1+"deg",d[f]=d[f].replace(b,g))):d[f]=d[f].replace(/radial-gradient/,"-webkit-radial-gradient").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");try{"".trim(),c=!0}catch(l){c=!1}c&&(d[f]=d[f].trim()),f++}return d.toString().replace(/\[/g,"").replace(/\]/g,"");}())`;
  426. @backgroundOpera: ~`(function(){var a,b,c,d,e,f,g,h,i,j,k;a="@{arguments}",c=null,d=a.split(/,(?=\s*(?:linear|radial))/g),e=d.length,k=/to\s*top/,j=/to\s*right/,h=/to\s*bottom/,i=/to\s*left/,b=/\d*deg/,f=0;while(f<e){/linear/.test(d[f])?(d[f]=d[f].replace(/linear-gradient/,"-o-linear-gradient"),k.test(d[f])?d[f]=d[f].replace(k,"bottom"):j.test(d[f])?d[f]=d[f].replace(j,"left"):h.test(d[f])?d[f]=d[f].replace(h,"top"):i.test(d[f])?d[f]=d[f].replace(i,"right"):b.test(d[f])&&(g=d[f].match(/\d*deg/),g=(parseInt(g)-90)*-1+"deg",d[f]=d[f].replace(b,g))):d[f]=d[f].replace(/radial-gradient/,"-o-radial-gradient").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");try{"".trim(),c=!0}catch(l){c=!1}c&&(d[f]=d[f].trim()),f++}return d.toString().replace(/\[/g,"").replace(/\]/g,"");})()`;
  427. @backgroundW3C: ~`(function(){var a,b,c,d,e;a="@{arguments}",b=null,c=a.split(/,(?=\s*(?:linear|radial))/g),d=c.length,e=0;while(e<d){try{"".trim(),b=!0}catch(f){b=!1}b&&(c[e]=c[e].trim()),e++}return c.toString().replace(/\[/g,"").replace(/\]/g,"");}())`;
  428. .result(@arguments, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) { background-image: @arguments; }
  429. .result(@arguments, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  430. .result(@arguments, @boolean, @localBoolean, @property) when (@boolean = true) and (@localBoolean = true) and (isstring(@property)) { background-image: @arguments; }
  431. .result(@arguments, @boolean, @localBoolean, @property) when not (@boolean = true), not (@localBoolean = true), not (isstring(@property)) { }
  432. .result(@backgroundSVG, @svg, @svg, @backgroundSVG);
  433. // -- this comment must be here because of LESS bug
  434. .result(@backgroundMoz, @moz, @mozLocal);
  435. // --
  436. .result(@backgroundWebkit, @webkit, @webkitLocal);
  437. // --
  438. .result(@backgroundOpera, @opera, @operaLocal);
  439. // --
  440. .result(@backgroundW3C, @w3c, @w3cLocal);
  441. }
  442. // element{ .background-image(linear-gradient(to bottom, #ffffff, #929292)); }
  443. // .background-origin
  444. .background-origin(@arguments:padding-box){
  445. // Local config for disabling properties
  446. @w3cLocal: true; // Unprefixed W3C syntax
  447. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  448. @mozLocal: true; // Firefox 4+
  449. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  450. .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-origin: @arguments;}
  451. .inception (@signal, @arguments) when (@signal = 2) { -moz-background-origin: @arguments;}
  452. .inception (@signal, @arguments) when (@signal = 5) { background-origin: @arguments;}
  453. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  454. .inception(@signal, @arguments);
  455. }
  456. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  457. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  458. // -- this comment must be here because of LESS bug
  459. .result(@arguments, @mozSignal, @moz, @mozLocal);
  460. // --
  461. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  462. }
  463. // element{ .background-origin(content-box); }
  464. // .background-size
  465. .background-size(...){
  466. // Local config for disabling properties
  467. @w3cLocal: true; // Unprefixed W3C syntax
  468. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  469. @mozLocal: true; // Firefox 4+
  470. @processing: ~`(function(){ var arg = "@{arguments}".replace("[","").replace("]","") || "none"; if( !/^\w*%?([ X])/.test(arg) ) { arg = arg.replace(/,/g,"") } return arg; })()`;
  471. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  472. .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-size: @processing;}
  473. .inception (@signal, @arguments) when (@signal = 2) { -moz-background-size: @processing;}
  474. .inception (@signal, @arguments) when (@signal = 5) { background-size: @processing;}
  475. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  476. .inception(@signal, @arguments);
  477. }
  478. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  479. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  480. // -- this comment must be here because of LESS bug
  481. .result(@arguments, @mozSignal, @moz, @mozLocal);
  482. // --
  483. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  484. }
  485. // element{ .background-size(50% auto); }
  486. // .border-radius
  487. .border-radius(@arguments:0) {
  488. // Local config for disabling properties
  489. @w3cLocal: true; // Unprefixed W3C syntax
  490. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  491. @mozLocal: true; // Firefox 4+
  492. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  493. .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-radius: @arguments; -webkit-background-clip: padding-box;}
  494. .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius: @arguments; -moz-background-clip: padding;}
  495. .inception (@signal, @arguments) when (@signal = 5) { border-radius: @arguments; background-clip: padding-box; }
  496. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  497. .inception(@signal, @arguments);
  498. }
  499. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  500. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  501. // -- this comment must be here because of LESS bug
  502. .result(@arguments, @mozSignal, @moz, @mozLocal);
  503. // --
  504. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  505. }
  506. // element{ .border-radius(10px); } // all corner rounded
  507. // element{ .border-radius(~"10px / 20px"); } // NEED TO BE ESCAPED OR LESS DEVIDE IT! Horizontal and vertical rounded differently
  508. // element{ .border-radius(0 10px 0 0); } // only top right corner rounded
  509. // .border-top-left-radius
  510. .border-top-left-radius(@arguments:0) {
  511. // Local config for disabling properties
  512. @w3cLocal: true; // Unprefixed W3C syntax
  513. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  514. @mozLocal: true; // Firefox 4+
  515. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  516. .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-top-left-radius: @arguments; -webkit-background-clip: padding-box;}
  517. .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-topleft: @arguments; -moz-background-clip: padding;}
  518. .inception (@signal, @arguments) when (@signal = 5) { border-top-left-radius: @arguments; background-clip: padding-box; }
  519. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  520. .inception(@signal, @arguments);
  521. }
  522. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  523. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  524. // -- this comment must be here because of LESS bug
  525. .result(@arguments, @mozSignal, @moz, @mozLocal);
  526. // --
  527. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  528. }
  529. // element{ .border-top-left-radius(10px); }
  530. // .border-top-right-radius
  531. .border-top-right-radius(@arguments:0) {
  532. // Local config for disabling properties
  533. @w3cLocal: true; // Unprefixed W3C syntax
  534. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  535. @mozLocal: true; // Firefox 4+
  536. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  537. .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-top-right-radius: @arguments; -webkit-background-clip: padding-box;}
  538. .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-topright: @arguments; -moz-background-clip: padding;}
  539. .inception (@signal, @arguments) when (@signal = 5) { border-top-right-radius: @arguments; background-clip: padding-box; }
  540. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  541. .inception(@signal, @arguments);
  542. }
  543. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  544. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  545. // -- this comment must be here because of LESS bug
  546. .result(@arguments, @mozSignal, @moz, @mozLocal);
  547. // --
  548. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  549. }
  550. // element{ .border-top-right-radius(10px); }
  551. // .border-bottom-left-radius
  552. .border-bottom-left-radius(@arguments:0) {
  553. // Local config for disabling properties
  554. @w3cLocal: true; // Unprefixed W3C syntax
  555. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  556. @mozLocal: true; // Firefox 4+
  557. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  558. .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-bottom-left-radius: @arguments; -webkit-background-clip: padding-box;}
  559. .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-bottomleft: @arguments; -moz-background-clip: padding;}
  560. .inception (@signal, @arguments) when (@signal = 5) { border-bottom-left-radius: @arguments; background-clip: padding-box; }
  561. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  562. .inception(@signal, @arguments);
  563. }
  564. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  565. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  566. // -- this comment must be here because of LESS bug
  567. .result(@arguments, @mozSignal, @moz, @mozLocal);
  568. // --
  569. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  570. }
  571. // element{ .border-bottom-left-radius(10px); }
  572. // .border-bottom-right-radius
  573. .border-bottom-right-radius(@arguments:0) {
  574. // Local config for disabling properties
  575. @w3cLocal: true; // Unprefixed W3C syntax
  576. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  577. @mozLocal: true; // Firefox 4+
  578. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  579. .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-bottom-right-radius: @arguments; -webkit-background-clip: padding-box;}
  580. .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-bottomright: @arguments; -moz-background-clip: padding;}
  581. .inception (@signal, @arguments) when (@signal = 5) { border-bottom-right-radius: @arguments; background-clip: padding-box; }
  582. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  583. .inception(@signal, @arguments);
  584. }
  585. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  586. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  587. // -- this comment must be here because of LESS bug
  588. .result(@arguments, @mozSignal, @moz, @mozLocal);
  589. // --
  590. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  591. }
  592. // element{ .border-bottom-right-radius(10px); }
  593. // .border-image
  594. .border-image(@arguments:none){
  595. // Local config for disabling properties
  596. @w3cLocal: true; // Unprefixed W3C syntax
  597. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  598. @mozLocal: true; // Firefox 4+
  599. @operaLocal: true; // Opera 10.5+
  600. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  601. .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-image: @arguments;}
  602. .inception (@signal, @arguments) when (@signal = 2) { -moz-border-image: @arguments;}
  603. .inception (@signal, @arguments) when (@signal = 3) { -o-border-image: @arguments;}
  604. .inception (@signal, @arguments) when (@signal = 5) { border-image: @arguments; }
  605. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  606. .inception(@signal, @arguments);
  607. }
  608. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  609. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  610. // -- this comment must be here because of LESS bug
  611. .result(@arguments, @mozSignal, @moz, @mozLocal);
  612. // --
  613. .result(@arguments, @operaSignal, @opera, @operaLocal);
  614. // --
  615. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  616. }
  617. // element{ .border-image(url(border.png) 30 30 round); }
  618. // .box-shadow
  619. .box-shadow(...){
  620. // Local config for disabling properties
  621. @w3cLocal: true; // Unprefixed W3C syntax
  622. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  623. @mozLocal: true; // Firefox 4+
  624. @processing: ~`(function(){ var arg = "@{arguments}".replace("[","").replace("]","") || "none"; if( !/^#?\w*%?([ X])/.test(arg) ) { arg = arg.replace(/,(?=[^()]*\))/g,'--').replace(/,/g,"").replace(/--/g,','); } return arg; })()`;
  625. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  626. .inception (@signal, @arguments) when (@signal = 1) { -webkit-box-shadow: @processing;}
  627. .inception (@signal, @arguments) when (@signal = 2) { -moz-box-shadow: @processing;}
  628. .inception (@signal, @arguments) when (@signal = 5) { box-shadow: @processing;}
  629. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  630. .inception(@signal, @arguments);
  631. }
  632. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  633. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  634. // -- this comment must be here because of LESS bug
  635. .result(@arguments, @mozSignal, @moz, @mozLocal);
  636. // --
  637. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  638. color: @arguments;
  639. }
  640. // element{ .box-shadow(0 1px 10px rgba(20,20,20,0.5), 0 1px 10px rgba(20,20,20,0.5)); }
  641. // .box-sizing
  642. .box-sizing(@arguments:content-box){
  643. // Local config for disabling properties
  644. @w3cLocal: true; // Unprefixed W3C syntax
  645. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  646. @mozLocal: true; // Firefox 4+
  647. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  648. .inception (@signal, @arguments) when (@signal = 1) { -webkit-box-sizing: @arguments;}
  649. .inception (@signal, @arguments) when (@signal = 2) { -moz-box-sizing: @arguments;}
  650. .inception (@signal, @arguments) when (@signal = 5) { box-sizing: @arguments;}
  651. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  652. .inception(@signal, @arguments);
  653. }
  654. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  655. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  656. // -- this comment must be here because of LESS bug
  657. .result(@arguments, @mozSignal, @moz, @mozLocal);
  658. // --
  659. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  660. }
  661. // element{ .box-sizing(border-box); }
  662. // .columns
  663. .columns(@arguments:auto auto){
  664. // Local config for disabling properties
  665. @w3cLocal: true; // Unprefixed W3C syntax
  666. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  667. @mozLocal: true; // Firefox 4+
  668. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  669. .inception (@signal, @arguments) when (@signal = 1) { -webkit-columns: @arguments;}
  670. .inception (@signal, @arguments) when (@signal = 2) { -moz-columns: @arguments;}
  671. .inception (@signal, @arguments) when (@signal = 5) { columns: @arguments;}
  672. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  673. .inception(@signal, @arguments);
  674. }
  675. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  676. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  677. // -- this comment must be here because of LESS bug
  678. .result(@arguments, @mozSignal, @moz, @mozLocal);
  679. // --
  680. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  681. }
  682. // element{ .columns(100px 3); }
  683. // .column-count
  684. .column-count(@arguments:auto){
  685. // Local config for disabling properties
  686. @w3cLocal: true; // Unprefixed W3C syntax
  687. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  688. @mozLocal: true; // Firefox 4+
  689. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  690. .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-count: @arguments;}
  691. .inception (@signal, @arguments) when (@signal = 2) { -moz-column-count: @arguments;}
  692. .inception (@signal, @arguments) when (@signal = 5) { column-count: @arguments;}
  693. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  694. .inception(@signal, @arguments);
  695. }
  696. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  697. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  698. // -- this comment must be here because of LESS bug
  699. .result(@arguments, @mozSignal, @moz, @mozLocal);
  700. // --
  701. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  702. }
  703. // element{ .column-count(3); }
  704. // .column-gap
  705. .column-gap(@arguments:normal){
  706. // Local config for disabling properties
  707. @w3cLocal: true; // Unprefixed W3C syntax
  708. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  709. @mozLocal: true; // Firefox 4+
  710. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  711. .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-gap: @arguments;}
  712. .inception (@signal, @arguments) when (@signal = 2) { -moz-column-gap: @arguments;}
  713. .inception (@signal, @arguments) when (@signal = 5) { column-gap: @arguments;}
  714. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  715. .inception(@signal, @arguments);
  716. }
  717. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  718. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  719. // -- this comment must be here because of LESS bug
  720. .result(@arguments, @mozSignal, @moz, @mozLocal);
  721. // --
  722. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  723. }
  724. // element{ .column-gap(40px); }
  725. // .column-rule
  726. .column-rule(@arguments:medium none black){
  727. // Local config for disabling properties
  728. @w3cLocal: true; // Unprefixed W3C syntax
  729. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  730. @mozLocal: true; // Firefox 4+
  731. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  732. .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-rule: @arguments;}
  733. .inception (@signal, @arguments) when (@signal = 2) { -moz-column-rule: @arguments;}
  734. .inception (@signal, @arguments) when (@signal = 5) { column-rule: @arguments;}
  735. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  736. .inception(@signal, @arguments);
  737. }
  738. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  739. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  740. // -- this comment must be here because of LESS bug
  741. .result(@arguments, @mozSignal, @moz, @mozLocal);
  742. // --
  743. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  744. }
  745. // element{ .column-rule(3px outset #ff00ff); }
  746. // .column-width
  747. .column-width(@arguments:auto){
  748. // Local config for disabling properties
  749. @w3cLocal: true; // Unprefixed W3C syntax
  750. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  751. @mozLocal: true; // Firefox 4+
  752. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  753. .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-width: @arguments;}
  754. .inception (@signal, @arguments) when (@signal = 2) { -moz-column-width: @arguments;}
  755. .inception (@signal, @arguments) when (@signal = 5) { column-width: @arguments;}
  756. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  757. .inception(@signal, @arguments);
  758. }
  759. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  760. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  761. // -- this comment must be here because of LESS bug
  762. .result(@arguments, @mozSignal, @moz, @mozLocal);
  763. // --
  764. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  765. }
  766. // element{ .column-width(100px); }
  767. // .font-face
  768. .font-face(@fontname, @fontfile) {
  769. font-family: "@{fontname}";
  770. src: url("@{fontfile}-webfont.eot");
  771. src: url("@{fontfile}-webfont.eot?#iefix") format("embedded-opentype"),
  772. url("@{fontfile}-webfont.woff") format("woff"),
  773. url("@{fontfile}-webfont.ttf") format("truetype"),
  774. url("@{fontfile}-webfont.svg#@{fontname}") format("svg");
  775. font-weight: normal;
  776. font-style: normal;
  777. }
  778. // element{ .font-face(ZendaRegular, zenda-webfont); }
  779. // .opacity
  780. .opacity(@arguments:1){
  781. // Local config for disabling properties
  782. @w3cLocal: true; // Unprefixed W3C syntax
  783. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  784. @mozLocal: true; // Firefox 4+
  785. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  786. .inception (@signal, @arguments) when (@signal = 1) { -webkit-opacity: @arguments;}
  787. .inception (@signal, @arguments) when (@signal = 2) { -moz-opacity: @arguments;}
  788. .inception (@signal, @arguments) when (@signal = 5) { opacity: @arguments;}
  789. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  790. .inception(@signal, @arguments);
  791. }
  792. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  793. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  794. // -- this comment must be here because of LESS bug
  795. .result(@arguments, @mozSignal, @moz, @mozLocal);
  796. // --
  797. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  798. }
  799. // element{ .opacity(.5); }
  800. // .perspective
  801. .perspective(@arguments:none){
  802. // Local config for disabling properties
  803. @w3cLocal: true; // Unprefixed W3C syntax
  804. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  805. @mozLocal: true; // Firefox 4+
  806. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  807. .inception (@signal, @arguments) when (@signal = 1) { -webkit-perspective: @arguments;}
  808. .inception (@signal, @arguments) when (@signal = 2) { -moz-perspective: @arguments;}
  809. .inception (@signal, @arguments) when (@signal = 5) { perspective: @arguments;}
  810. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  811. .inception(@signal, @arguments);
  812. }
  813. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  814. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  815. // -- this comment must be here because of LESS bug
  816. .result(@arguments, @mozSignal, @moz, @mozLocal);
  817. // --
  818. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  819. }
  820. // element{ .perspective(350px); }
  821. // .perspective-origin
  822. .perspective-origin(@arguments:50% 50%){
  823. // Local config for disabling properties
  824. @w3cLocal: true; // Unprefixed W3C syntax
  825. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  826. @mozLocal: true; // Firefox 4+
  827. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  828. .inception (@signal, @arguments) when (@signal = 1) { -webkit-perspective-origin: @arguments;}
  829. .inception (@signal, @arguments) when (@signal = 2) { -moz-perspective-origin: @arguments;}
  830. .inception (@signal, @arguments) when (@signal = 5) { perspective-origin: @arguments;}
  831. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  832. .inception(@signal, @arguments);
  833. }
  834. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  835. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  836. // -- this comment must be here because of LESS bug
  837. .result(@arguments, @mozSignal, @moz, @mozLocal);
  838. // --
  839. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  840. }
  841. // element{ .perspective-origin(top left); }
  842. // .size
  843. .size(@square){
  844. width: @square;
  845. height: @square;
  846. }
  847. .size(@width, @height){
  848. width: @width;
  849. height: @height;
  850. }
  851. // element{ .size(10px); } // render width:10px; height:10px;
  852. // element{ .size(10px, 20px); } // render width:10px; height: 20px;
  853. // .transform
  854. .transform(@arguments:none, ...){
  855. // Local config for disabling properties
  856. @w3cLocal: true; // Unprefixed W3C syntax
  857. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  858. @mozLocal: true; // Firefox 4+
  859. @operaLocal: true; // Opera 10.5+
  860. @msLocal: true; // IE 10+
  861. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  862. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: @arguments;}
  863. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: @arguments;}
  864. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: @arguments;}
  865. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: @arguments;}
  866. .inception (@signal, @arguments) when (@signal = 5) { transform: @arguments;}
  867. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  868. .inception(@signal, @arguments);
  869. }
  870. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  871. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  872. // -- this comment must be here because of LESS bug
  873. .result(@arguments, @mozSignal, @moz, @mozLocal);
  874. // --
  875. .result(@arguments, @operaSignal, @opera, @operaLocal);
  876. // --
  877. .result(@arguments, @msSignal, @ms, @msLocal);
  878. // --
  879. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  880. }
  881. // element{ .transform(scale(.5) translate(10px, 20px)); }
  882. // .transform-origin
  883. .transform-origin(@arguments:50% 50% 0){
  884. // Local config for disabling properties
  885. @w3cLocal: true; // Unprefixed W3C syntax
  886. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  887. @mozLocal: true; // Firefox 4+
  888. @operaLocal: true; // Opera 10.5+
  889. @msLocal: true; // IE 10+
  890. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  891. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform-origin: @arguments;}
  892. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform-origin: @arguments;}
  893. .inception (@signal, @arguments) when (@signal = 3) { -o-transform-origin: @arguments;}
  894. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform-origin: @arguments;}
  895. .inception (@signal, @arguments) when (@signal = 5) { transform-origin: @arguments;}
  896. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  897. .inception(@signal, @arguments);
  898. }
  899. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  900. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  901. // -- this comment must be here because of LESS bug
  902. .result(@arguments, @mozSignal, @moz, @mozLocal);
  903. // --
  904. .result(@arguments, @operaSignal, @opera, @operaLocal);
  905. // --
  906. .result(@arguments, @msSignal, @ms, @msLocal);
  907. // --
  908. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  909. }
  910. // element{ .transform-origin(20% 40%); }
  911. // .transform-style
  912. .transform-style(@arguments:flat){
  913. // Local config for disabling properties
  914. @w3cLocal: true; // Unprefixed W3C syntax
  915. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  916. @mozLocal: true; // Firefox 4+
  917. @msLocal: true; // IE 10+
  918. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  919. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform-origin: @arguments;}
  920. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform-origin: @arguments;}
  921. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform-origin: @arguments;}
  922. .inception (@signal, @arguments) when (@signal = 5) { transform-origin: @arguments;}
  923. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  924. .inception(@signal, @arguments);
  925. }
  926. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  927. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  928. // -- this comment must be here because of LESS bug
  929. .result(@arguments, @mozSignal, @moz, @mozLocal);
  930. // --
  931. .result(@arguments, @msSignal, @ms, @msLocal);
  932. // --
  933. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  934. }
  935. // element{ .transform-style(preserve-3d); }
  936. // .translate
  937. .translate(@x:0, @y:0){
  938. // Local config for disabling properties
  939. @w3cLocal: true; // Unprefixed W3C syntax
  940. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  941. @mozLocal: true; // Firefox 4+
  942. @operaLocal: true; // Opera 10.5+
  943. @msLocal: true; // IE 10+
  944. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  945. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translate(@x, @y);}
  946. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translate(@x, @y);}
  947. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translate(@x, @y);}
  948. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translate(@x, @y);}
  949. .inception (@signal, @arguments) when (@signal = 5) { transform: translate(@x, @y);}
  950. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  951. .inception(@signal, @arguments);
  952. }
  953. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  954. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  955. // -- this comment must be here because of LESS bug
  956. .result(@arguments, @mozSignal, @moz, @mozLocal);
  957. // --
  958. .result(@arguments, @operaSignal, @opera, @operaLocal);
  959. // --
  960. .result(@arguments, @msSignal, @ms, @msLocal);
  961. // --
  962. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  963. }
  964. // element{ .translate(100px); }
  965. // element{ .translate(100px, 50px); }
  966. // .translate3d
  967. .translate3d(@x:0, @y:0, @z:0){
  968. // Local config for disabling properties
  969. @w3cLocal: true; // Unprefixed W3C syntax
  970. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  971. @mozLocal: true; // Firefox 4+
  972. @operaLocal: true; // Opera 10.5+
  973. @msLocal: true; // IE 10+
  974. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  975. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translate3d(@x, @y, @z);}
  976. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translate3d(@x, @y, @z);}
  977. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translate3d(@x, @y, @z);}
  978. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translate3d(@x, @y, @z);}
  979. .inception (@signal, @arguments) when (@signal = 5) { transform: translate3d(@x, @y, @z);}
  980. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  981. .inception(@signal, @arguments);
  982. }
  983. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  984. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  985. // -- this comment must be here because of LESS bug
  986. .result(@arguments, @mozSignal, @moz, @mozLocal);
  987. // --
  988. .result(@arguments, @operaSignal, @opera, @operaLocal);
  989. // --
  990. .result(@arguments, @msSignal, @ms, @msLocal);
  991. // --
  992. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  993. }
  994. // element{ .translate3d(10px, 20px, 30px); }
  995. // .translateX
  996. .translateX(@x:0){
  997. // Local config for disabling properties
  998. @w3cLocal: true; // Unprefixed W3C syntax
  999. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1000. @mozLocal: true; // Firefox 4+
  1001. @operaLocal: true; // Opera 10.5+
  1002. @msLocal: true; // IE 10+
  1003. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1004. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateX(@x);}
  1005. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateX(@x);}
  1006. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateX(@x);}
  1007. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateX(@x);}
  1008. .inception (@signal, @arguments) when (@signal = 5) { transform: translateX(@x);}
  1009. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1010. .inception(@signal, @arguments);
  1011. }
  1012. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1013. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1014. // -- this comment must be here because of LESS bug
  1015. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1016. // --
  1017. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1018. // --
  1019. .result(@arguments, @msSignal, @ms, @msLocal);
  1020. // --
  1021. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1022. }
  1023. // element{ .translateX(10px); }
  1024. // .translateY
  1025. .translateY(@y:0){
  1026. // Local config for disabling properties
  1027. @w3cLocal: true; // Unprefixed W3C syntax
  1028. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1029. @mozLocal: true; // Firefox 4+
  1030. @operaLocal: true; // Opera 10.5+
  1031. @msLocal: true; // IE 10+
  1032. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1033. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateY(@y);}
  1034. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateY(@y);}
  1035. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateY(@y);}
  1036. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateY(@y);}
  1037. .inception (@signal, @arguments) when (@signal = 5) { transform: translateY(@y);}
  1038. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1039. .inception(@signal, @arguments);
  1040. }
  1041. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1042. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1043. // -- this comment must be here because of LESS bug
  1044. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1045. // --
  1046. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1047. // --
  1048. .result(@arguments, @msSignal, @ms, @msLocal);
  1049. // --
  1050. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1051. }
  1052. // element{ .translateY(15px); }
  1053. // .translateZ
  1054. .translateZ(@z:0){
  1055. // Local config for disabling properties
  1056. @w3cLocal: true; // Unprefixed W3C syntax
  1057. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1058. @mozLocal: true; // Firefox 4+
  1059. @operaLocal: true; // Opera 10.5+
  1060. @msLocal: true; // IE 10+
  1061. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1062. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateZ(@z);}
  1063. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateZ(@z);}
  1064. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateZ(@z);}
  1065. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateZ(@z);}
  1066. .inception (@signal, @arguments) when (@signal = 5) { transform: translateZ(@z);}
  1067. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1068. .inception(@signal, @arguments);
  1069. }
  1070. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1071. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1072. // -- this comment must be here because of LESS bug
  1073. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1074. // --
  1075. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1076. // --
  1077. .result(@arguments, @msSignal, @ms, @msLocal);
  1078. // --
  1079. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1080. }
  1081. // element{ .translateZ(32px); }
  1082. // .scale
  1083. .scale(@x:1){
  1084. // Local config for disabling properties
  1085. @w3cLocal: true; // Unprefixed W3C syntax
  1086. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1087. @mozLocal: true; // Firefox 4+
  1088. @operaLocal: true; // Opera 10.5+
  1089. @msLocal: true; // IE 10+
  1090. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1091. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale(@x);}
  1092. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale(@x);}
  1093. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale(@x);}
  1094. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale(@x);}
  1095. .inception (@signal, @arguments) when (@signal = 5) { transform: scale(@x);}
  1096. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1097. .inception(@signal, @arguments);
  1098. }
  1099. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1100. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1101. // -- this comment must be here because of LESS bug
  1102. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1103. // --
  1104. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1105. // --
  1106. .result(@arguments, @msSignal, @ms, @msLocal);
  1107. // --
  1108. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1109. }
  1110. .scale(@x, @y){
  1111. // Local config for disabling properties
  1112. @w3cLocal: true; // Unprefixed W3C syntax
  1113. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1114. @mozLocal: true; // Firefox 4+
  1115. @operaLocal: true; // Opera 10.5+
  1116. @msLocal: true; // IE 10+
  1117. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1118. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale(@x, @y);}
  1119. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale(@x, @y);}
  1120. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale(@x, @y);}
  1121. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale(@x, @y);}
  1122. .inception (@signal, @arguments) when (@signal = 5) { transform: scale(@x, @y);}
  1123. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1124. .inception(@signal, @arguments);
  1125. }
  1126. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1127. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1128. // -- this comment must be here because of LESS bug
  1129. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1130. // --
  1131. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1132. // --
  1133. .result(@arguments, @msSignal, @ms, @msLocal);
  1134. // --
  1135. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1136. }
  1137. // element{ .scale(2); }
  1138. // element{ .scale(2, 1); }
  1139. // .scale3d
  1140. .scale3d(@x:1, @y:1, @z:1){
  1141. // Local config for disabling properties
  1142. @w3cLocal: true; // Unprefixed W3C syntax
  1143. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1144. @mozLocal: true; // Firefox 4+
  1145. @operaLocal: true; // Opera 10.5+
  1146. @msLocal: true; // IE 10+
  1147. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1148. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale3d(@x, @y, @z);}
  1149. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale3d(@x, @y, @z);}
  1150. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale3d(@x, @y, @z);}
  1151. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale3d(@x, @y, @z);}
  1152. .inception (@signal, @arguments) when (@signal = 5) { transform: scale3d(@x, @y, @z);}
  1153. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1154. .inception(@signal, @arguments);
  1155. }
  1156. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1157. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1158. // -- this comment must be here because of LESS bug
  1159. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1160. // --
  1161. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1162. // --
  1163. .result(@arguments, @msSignal, @ms, @msLocal);
  1164. // --
  1165. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1166. }
  1167. // element{ .scale3d(1, 2, 1); }
  1168. // .scaleX
  1169. .scaleX(@x:1){
  1170. // Local config for disabling properties
  1171. @w3cLocal: true; // Unprefixed W3C syntax
  1172. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1173. @mozLocal: true; // Firefox 4+
  1174. @operaLocal: true; // Opera 10.5+
  1175. @msLocal: true; // IE 10+
  1176. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1177. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleX(@x);}
  1178. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleX(@x);}
  1179. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleX(@x);}
  1180. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleX(@x);}
  1181. .inception (@signal, @arguments) when (@signal = 5) { transform: scaleX(@x);}
  1182. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1183. .inception(@signal, @arguments);
  1184. }
  1185. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1186. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1187. // -- this comment must be here because of LESS bug
  1188. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1189. // --
  1190. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1191. // --
  1192. .result(@arguments, @msSignal, @ms, @msLocal);
  1193. // --
  1194. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1195. }
  1196. // element{ .scaleX(1.5); }
  1197. // .scaleY
  1198. .scaleY(@y:1){
  1199. // Local config for disabling properties
  1200. @w3cLocal: true; // Unprefixed W3C syntax
  1201. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1202. @mozLocal: true; // Firefox 4+
  1203. @operaLocal: true; // Opera 10.5+
  1204. @msLocal: true; // IE 10+
  1205. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1206. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleX(@y);}
  1207. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleX(@y);}
  1208. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleX(@y);}
  1209. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleX(@y);}
  1210. .inception (@signal, @arguments) when (@signal = 5) { transform: scaleX(@y);}
  1211. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1212. .inception(@signal, @arguments);
  1213. }
  1214. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1215. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1216. // -- this comment must be here because of LESS bug
  1217. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1218. // --
  1219. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1220. // --
  1221. .result(@arguments, @msSignal, @ms, @msLocal);
  1222. // --
  1223. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1224. }
  1225. // element{ .scaleX(1.5); }
  1226. // .scaleZ
  1227. .scaleZ(@z:1){
  1228. // Local config for disabling properties
  1229. @w3cLocal: true; // Unprefixed W3C syntax
  1230. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1231. @mozLocal: true; // Firefox 4+
  1232. @operaLocal: true; // Opera 10.5+
  1233. @msLocal: true; // IE 10+
  1234. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1235. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleZ(@z);}
  1236. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleZ(@z);}
  1237. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleZ(@z);}
  1238. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleZ(@z);}
  1239. .inception (@signal, @arguments) when (@signal = 5) { transform: scaleZ(@z);}
  1240. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1241. .inception(@signal, @arguments);
  1242. }
  1243. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1244. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1245. // -- this comment must be here because of LESS bug
  1246. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1247. // --
  1248. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1249. // --
  1250. .result(@arguments, @msSignal, @ms, @msLocal);
  1251. // --
  1252. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1253. }
  1254. // element{ .scaleZ(2.7); }
  1255. // .rotate
  1256. .rotate(@angle:0){
  1257. // Local config for disabling properties
  1258. @w3cLocal: true; // Unprefixed W3C syntax
  1259. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1260. @mozLocal: true; // Firefox 4+
  1261. @operaLocal: true; // Opera 10.5+
  1262. @msLocal: true; // IE 10+
  1263. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1264. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotate(@angle);}
  1265. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotate(@angle);}
  1266. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotate(@angle);}
  1267. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotate(@angle);}
  1268. .inception (@signal, @arguments) when (@signal = 5) { transform: rotate(@angle);}
  1269. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1270. .inception(@signal, @arguments);
  1271. }
  1272. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1273. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1274. // -- this comment must be here because of LESS bug
  1275. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1276. // --
  1277. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1278. // --
  1279. .result(@arguments, @msSignal, @ms, @msLocal);
  1280. // --
  1281. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1282. }
  1283. // element{ .rotate(45deg); }
  1284. // .rotate3d
  1285. .rotate3d(@x:0, @y:0, @z: 0, @angle:0){
  1286. // Local config for disabling properties
  1287. @w3cLocal: true; // Unprefixed W3C syntax
  1288. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1289. @mozLocal: true; // Firefox 4+
  1290. @operaLocal: true; // Opera 10.5+
  1291. @msLocal: true; // IE 10+
  1292. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1293. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotate3d(@x, @y, @z, @angle);}
  1294. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotate3d(@x, @y, @z, @angle);}
  1295. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotate3d(@x, @y, @z, @angle);}
  1296. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotate3d(@x, @y, @z, @angle);}
  1297. .inception (@signal, @arguments) when (@signal = 5) { transform: rotate3d(@x, @y, @z, @angle);}
  1298. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1299. .inception(@signal, @arguments);
  1300. }
  1301. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1302. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1303. // -- this comment must be here because of LESS bug
  1304. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1305. // --
  1306. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1307. // --
  1308. .result(@arguments, @msSignal, @ms, @msLocal);
  1309. // --
  1310. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1311. }
  1312. // element{ .rotate3d(1, 2.0, 3.0, 10deg); }
  1313. // .rotateX
  1314. .rotateX(@angle:0){
  1315. // Local config for disabling properties
  1316. @w3cLocal: true; // Unprefixed W3C syntax
  1317. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1318. @mozLocal: true; // Firefox 4+
  1319. @operaLocal: true; // Opera 10.5+
  1320. @msLocal: true; // IE 10+
  1321. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1322. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateX(@angle);}
  1323. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateX(@angle);}
  1324. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateX(@angle);}
  1325. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateX(@angle);}
  1326. .inception (@signal, @arguments) when (@signal = 5) { transform: rotateX(@angle);}
  1327. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1328. .inception(@signal, @arguments);
  1329. }
  1330. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1331. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1332. // -- this comment must be here because of LESS bug
  1333. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1334. // --
  1335. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1336. // --
  1337. .result(@arguments, @msSignal, @ms, @msLocal);
  1338. // --
  1339. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1340. }
  1341. // element{ .rotateX(63deg); }
  1342. // .rotateY
  1343. .rotateY(@angle:0){
  1344. // Local config for disabling properties
  1345. @w3cLocal: true; // Unprefixed W3C syntax
  1346. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1347. @mozLocal: true; // Firefox 4+
  1348. @operaLocal: true; // Opera 10.5+
  1349. @msLocal: true; // IE 10+
  1350. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1351. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateY(@angle);}
  1352. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateY(@angle);}
  1353. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateY(@angle);}
  1354. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateY(@angle);}
  1355. .inception (@signal, @arguments) when (@signal = 5) { transform: rotateY(@angle);}
  1356. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1357. .inception(@signal, @arguments);
  1358. }
  1359. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1360. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1361. // -- this comment must be here because of LESS bug
  1362. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1363. // --
  1364. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1365. // --
  1366. .result(@arguments, @msSignal, @ms, @msLocal);
  1367. // --
  1368. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1369. }
  1370. // element{ .rotateY(24deg); }
  1371. // .rotateZ
  1372. .rotateZ(@angle:0){
  1373. // Local config for disabling properties
  1374. @w3cLocal: true; // Unprefixed W3C syntax
  1375. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1376. @mozLocal: true; // Firefox 4+
  1377. @operaLocal: true; // Opera 10.5+
  1378. @msLocal: true; // IE 10+
  1379. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1380. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateZ(@angle);}
  1381. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateZ(@angle);}
  1382. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateZ(@angle);}
  1383. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateZ(@angle);}
  1384. .inception (@signal, @arguments) when (@signal = 5) { transform: rotateZ(@angle);}
  1385. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1386. .inception(@signal, @arguments);
  1387. }
  1388. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1389. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1390. // -- this comment must be here because of LESS bug
  1391. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1392. // --
  1393. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1394. // --
  1395. .result(@arguments, @msSignal, @ms, @msLocal);
  1396. // --
  1397. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1398. }
  1399. // element{ .rotateZ(280deg); }
  1400. // .skew
  1401. .skew(@angle:0){
  1402. // Local config for disabling properties
  1403. @w3cLocal: true; // Unprefixed W3C syntax
  1404. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1405. @mozLocal: true; // Firefox 4+
  1406. @operaLocal: true; // Opera 10.5+
  1407. @msLocal: true; // IE 10+
  1408. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1409. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skew(@angle);}
  1410. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skew(@angle);}
  1411. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skew(@angle);}
  1412. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skew(@angle);}
  1413. .inception (@signal, @arguments) when (@signal = 5) { transform: skew(@angle);}
  1414. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1415. .inception(@signal, @arguments);
  1416. }
  1417. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1418. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1419. // -- this comment must be here because of LESS bug
  1420. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1421. // --
  1422. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1423. // --
  1424. .result(@arguments, @msSignal, @ms, @msLocal);
  1425. // --
  1426. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1427. }
  1428. // element{ .skew(20deg); }
  1429. // .skewX
  1430. .skewX(@angle:0){
  1431. // Local config for disabling properties
  1432. @w3cLocal: true; // Unprefixed W3C syntax
  1433. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1434. @mozLocal: true; // Firefox 4+
  1435. @operaLocal: true; // Opera 10.5+
  1436. @msLocal: true; // IE 10+
  1437. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1438. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skewX(@angle);}
  1439. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skewX(@angle);}
  1440. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skewX(@angle);}
  1441. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skewX(@angle);}
  1442. .inception (@signal, @arguments) when (@signal = 5) { transform: skewX(@angle);}
  1443. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1444. .inception(@signal, @arguments);
  1445. }
  1446. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1447. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1448. // -- this comment must be here because of LESS bug
  1449. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1450. // --
  1451. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1452. // --
  1453. .result(@arguments, @msSignal, @ms, @msLocal);
  1454. // --
  1455. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1456. }
  1457. // element{ .skewX(24deg); }
  1458. // .skewY
  1459. .skewY(@angle:0){
  1460. // Local config for disabling properties
  1461. @w3cLocal: true; // Unprefixed W3C syntax
  1462. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1463. @mozLocal: true; // Firefox 4+
  1464. @operaLocal: true; // Opera 10.5+
  1465. @msLocal: true; // IE 10+
  1466. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1467. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skewY(@angle);}
  1468. .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skewY(@angle);}
  1469. .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skewY(@angle);}
  1470. .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skewY(@angle);}
  1471. .inception (@signal, @arguments) when (@signal = 5) { transform: skewY(@angle);}
  1472. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1473. .inception(@signal, @arguments);
  1474. }
  1475. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1476. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1477. // -- this comment must be here because of LESS bug
  1478. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1479. // --
  1480. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1481. // --
  1482. .result(@arguments, @msSignal, @ms, @msLocal);
  1483. // --
  1484. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1485. }
  1486. // element{ .skewY(36deg); }
  1487. // .transition
  1488. .transition(...){
  1489. // Local config for disabling properties
  1490. @w3cLocal: true; // Unprefixed W3C syntax
  1491. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1492. @mozLocal: true; // Firefox 4+
  1493. @operaLocal: true; // Opera 10.5+
  1494. @msLocal: true; // IE 10+
  1495. @transitionWebkit: ~`(function(){var a,b,c,d,e,f,g;a="@{arguments}".split(","),c=["background-size","border-","box-shadow","column","transform"],d=c.length,e=a,f=!1,b=a.length;for(var h=0;h<d;h++)for(var i=0;i<b;i++){g=new RegExp(c[h],"g");try{"".trim(),f=!0}catch(j){f=!1}a[i]=f?a[i].trim():a[i],g.test(a[i])&&(e[i]=a[i].replace(g,"-webkit-"+c[h]))}return e.join(", ").replace("[","").replace("]","");}())`;
  1496. @transitionMoz: ~`(function(){var a,b,c,d,e,f,g;a="@{arguments}".split(","),c=["background-size","border-","box-shadow","column","transform"],d=c.length,e=a,f=!1,b=a.length;for(var h=0;h<d;h++)for(var i=0;i<b;i++){g=new RegExp(c[h],"g");try{"".trim(),f=!0}catch(j){f=!1}a[i]=f?a[i].trim():a[i],g.test(a[i])&&(e[i]=a[i].replace(g,"-moz-"+c[h]))}return e.join(", ").replace("[","").replace("]","");}())`;
  1497. @transitionOpera: ~`(function(){var a,b,c,d,e,f,g;a="@{arguments}".split(","),c=["transform"],d=c.length,e=a,f=!1,b=a.length;for(var h=0;h<d;h++)for(var i=0;i<b;i++){g=new RegExp(c[h],"g");try{"".trim(),f=!0}catch(j){f=!1}a[i]=f?a[i].trim():a[i],g.test(a[i])&&(e[i]=a[i].replace(g,"-o-"+c[h]))}return e.join(", ").replace("[","").replace("]","");}())`;
  1498. @transitionMs: ~`(function(){var a,b,c,d,e,f,g;a="@{arguments}".split(","),c=["transform"],d=c.length,e=a,f=!1,b=a.length;for(var h=0;h<d;h++)for(var i=0;i<b;i++){g=new RegExp(c[h],"g");try{"".trim(),f=!0}catch(j){f=!1}a[i]=f?a[i].trim():a[i],g.test(a[i])&&(e[i]=a[i].replace(g,"-ms-"+c[h]))}return e.join(", ").replace("[","").replace("]","");}())`;
  1499. @transitionW3C: ~`(function(){var a,b,c;a="@{arguments}".split(","),c=!1,b=a.length;for(var d=0;d<b;d++){try{"".trim(),c=!0}catch(e){c=!1}a[d]=c?a[d].trim():a[d]}return a.join(", ").replace("[","").replace("]","");}())`;
  1500. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1501. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transition: ~`(function(){ var arg = "@{transitionWebkit}" || "all 0 ease 0"; if( !/^\w*([ X])/.test(arg) ) { arg = arg.replace(/,/g,"") } return arg; })()`; }
  1502. .inception (@signal, @arguments) when (@signal = 2) { -moz-transition: ~`(function(){ var arg = "@{transitionMoz}" || "all 0 ease 0"; if( !/^\w*([ X])/.test(arg) ) { arg = arg.replace(/,/g,"") } return arg; })()`; }
  1503. .inception (@signal, @arguments) when (@signal = 3) { -o-transition:~`(function(){ var arg = "@{transitionOpera}" || "all 0 ease 0"; if( !/^\w*([ X])/.test(arg) ) { arg = arg.replace(/,/g,"") } return arg; })()`; }
  1504. .inception (@signal, @arguments) when (@signal = 4) { -ms-transition: ~`(function(){ var arg = "@{transitionMs}" || "all 0 ease 0"; if( !/^\w*([ X])/.test(arg) ) { arg = arg.replace(/,/g,"") } return arg; })()`; }
  1505. .inception (@signal, @arguments) when (@signal = 5) { transition: ~`(function(){ var arg = "@{transitionW3C}" || "all 0 ease 0"; if( !/^\w*([ X])/.test(arg) ) { arg = arg.replace(/,/g,"") } return arg; })()`; }
  1506. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1507. .inception(@signal, @arguments);
  1508. }
  1509. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1510. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1511. // -- this comment must be here because of LESS bug
  1512. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1513. // --
  1514. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1515. // --
  1516. .result(@arguments, @msSignal, @ms, @msLocal);
  1517. // --
  1518. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1519. }
  1520. // element{ .transition(transform 3s linear); }
  1521. // .transition-property
  1522. .transition-property(...){
  1523. // Local config for disabling properties
  1524. @w3cLocal: true; // Unprefixed W3C syntax
  1525. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1526. @mozLocal: true; // Firefox 4+
  1527. @operaLocal: true; // Opera 10.5+
  1528. @msLocal: true; // IE 10+
  1529. @transitionWebkit: ~`(function(){var a,b,c,d,e,f,g;a="@{arguments}".split(","),c=["background-size","border-","box-shadow","column","transform"],d=c.length,e=a,f=!1,b=a.length;for(var h=0;h<d;h++)for(var i=0;i<b;i++){g=new RegExp(c[h],"g");try{"".trim(),f=!0}catch(j){f=!1}a[i]=f?a[i].trim():a[i],g.test(a[i])&&(e[i]=a[i].replace(g,"-webkit-"+c[h]))}return e.join(", ").replace("[","").replace("]","");}())`;
  1530. @transitionMoz: ~`(function(){var a,b,c,d,e,f,g;a="@{arguments}".split(","),c=["background-size","border-","box-shadow","column","transform"],d=c.length,e=a,f=!1,b=a.length;for(var h=0;h<d;h++)for(var i=0;i<b;i++){g=new RegExp(c[h],"g");try{"".trim(),f=!0}catch(j){f=!1}a[i]=f?a[i].trim():a[i],g.test(a[i])&&(e[i]=a[i].replace(g,"-moz-"+c[h]))}return e.join(", ").replace("[","").replace("]","");}())`;
  1531. @transitionOpera: ~`(function(){var a,b,c,d,e,f,g;a="@{arguments}".split(","),c=["transform"],d=c.length,e=a,f=!1,b=a.length;for(var h=0;h<d;h++)for(var i=0;i<b;i++){g=new RegExp(c[h],"g");try{"".trim(),f=!0}catch(j){f=!1}a[i]=f?a[i].trim():a[i],g.test(a[i])&&(e[i]=a[i].replace(g,"-o-"+c[h]))}return e.join(", ").replace("[","").replace("]","");}())`;
  1532. @transitionMs: ~`(function(){var a,b,c,d,e,f,g;a="@{arguments}".split(","),c=["transform"],d=c.length,e=a,f=!1,b=a.length;for(var h=0;h<d;h++)for(var i=0;i<b;i++){g=new RegExp(c[h],"g");try{"".trim(),f=!0}catch(j){f=!1}a[i]=f?a[i].trim():a[i],g.test(a[i])&&(e[i]=a[i].replace(g,"-ms-"+c[h]))}return e.join(", ").replace("[","").replace("]","");}())`;
  1533. @transitionW3C: ~`(function(){var a,b,c;a="@{arguments}".split(","),c=!1,b=a.length;for(var d=0;d<b;d++){try{"".trim(),c=!0}catch(e){c=!1}a[d]=c?a[d].trim():a[d]}return a.join(", ").replace("[","").replace("]","");}())`;
  1534. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1535. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transition-property: ~`(function(){ var arg = "@{transitionWebkit}" || "0"; var decision = false; try{ var hasComma = arg.match(/([^ ,][a-z0-9-]*)/g); if (hasComma.length < 2) { decision = true; } } catch (e) {} if (decision === true) arg = hasComma.join(" ").replace(/,/g,""); return arg; }())`; }
  1536. .inception (@signal, @arguments) when (@signal = 2) { -moz-transition-property: ~`(function(){ var arg = "@{transitionMoz}" || "0"; var decision = false; try{ var hasComma = arg.match(/([^ ,][a-z0-9-]*)/g); if (hasComma.length < 2) { decision = true; } } catch (e) {} if (decision === true) arg = hasComma.join(" ").replace(/,/g,""); return arg; }())`; }
  1537. .inception (@signal, @arguments) when (@signal = 3) { -o-transition-property: ~`(function(){ var arg = "@{transitionOpera}" || "0"; var decision = false; try{ var hasComma = arg.match(/([^ ,][a-z0-9-]*)/g); if (hasComma.length < 2) { decision = true; } } catch (e) {} if (decision === true) arg = hasComma.join(" ").replace(/,/g,""); return arg; }())`; }
  1538. .inception (@signal, @arguments) when (@signal = 4) { -ms-transition-property: ~`(function(){ var arg = "@{transitionMs}" || "0"; var decision = false; try{ var hasComma = arg.match(/([^ ,][a-z0-9-]*)/g); if (hasComma.length < 2) { decision = true; } } catch (e) {} if (decision === true) arg = hasComma.join(" ").replace(/,/g,""); return arg; }())`; }
  1539. .inception (@signal, @arguments) when (@signal = 5) { transition-property: ~`(function(){ var arg = "@{transitionW3C}" || "0"; var decision = false; try{ var hasComma = arg.match(/([^ ,][a-z0-9-]*)/g); if (hasComma.length < 2) { decision = true; } } catch (e) {} if (decision === true) arg = hasComma.join(" ").replace(/,/g,""); return arg; }())`; }
  1540. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1541. .inception(@signal, @arguments);
  1542. }
  1543. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1544. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1545. // -- this comment must be here because of LESS bug
  1546. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1547. // --
  1548. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1549. // --
  1550. .result(@arguments, @msSignal, @ms, @msLocal);
  1551. // --
  1552. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1553. }
  1554. // element{ .transition-property(width, height); }
  1555. // .transition-duration
  1556. .transition-duration(...){
  1557. // Local config for disabling properties
  1558. @w3cLocal: true; // Unprefixed W3C syntax
  1559. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1560. @mozLocal: true; // Firefox 4+
  1561. @operaLocal: true; // Opera 10.5+
  1562. @msLocal: true; // IE 10+
  1563. @processing: ~`(function(){ var arg = "@{arguments}" || "0"; try{ var hasComma = arg.match(/,/g).length > 1 ? true : false; } catch (e) {} if (hasComma === true) arg = arg.replace(/,/g,""); arg = arg.replace("[","").replace("]",""); return arg; }())`;
  1564. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1565. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transition-duration: @processing; }
  1566. .inception (@signal, @arguments) when (@signal = 2) { -moz-transition-duration: @processing; }
  1567. .inception (@signal, @arguments) when (@signal = 3) { -o-transition-duration: @processing; }
  1568. .inception (@signal, @arguments) when (@signal = 5) { transition-duration: @processing; }
  1569. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1570. .inception(@signal, @arguments);
  1571. }
  1572. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1573. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1574. // -- this comment must be here because of LESS bug
  1575. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1576. // --
  1577. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1578. // --
  1579. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1580. }
  1581. // element{ .transition-duration(250ms); }
  1582. // .transition-timing-function
  1583. .transition-timing-function(...){
  1584. // Local config for disabling properties
  1585. @w3cLocal: true; // Unprefixed W3C syntax
  1586. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1587. @mozLocal: true; // Firefox 4+
  1588. @operaLocal: true; // Opera 10.5+
  1589. @msLocal: true; // IE 10+
  1590. @processing: ~`(function(){ var arg = "@{arguments}" || "ease"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  1591. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1592. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transition-timing-function: @processing; }
  1593. .inception (@signal, @arguments) when (@signal = 2) { -moz-transition-timing-function: @processing; }
  1594. .inception (@signal, @arguments) when (@signal = 3) { -o-transition-timing-function: @processing; }
  1595. .inception (@signal, @arguments) when (@signal = 5) { transition-timing-function: @processing; }
  1596. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1597. .inception(@signal, @arguments);
  1598. }
  1599. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1600. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1601. // -- this comment must be here because of LESS bug
  1602. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1603. // --
  1604. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1605. // --
  1606. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1607. }
  1608. // element{ .transition-timing-function(cubic-bezier(0,0,1,1)); }
  1609. // .transition-delay
  1610. .transition-delay(...){
  1611. // Local config for disabling properties
  1612. @w3cLocal: true; // Unprefixed W3C syntax
  1613. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1614. @mozLocal: true; // Firefox 4+
  1615. @operaLocal: true; // Opera 10.5+
  1616. @msLocal: true; // IE 10+
  1617. @processing: ~`(function(){ var arg = "@{arguments}" || "0"; arg = arg.replace("[","").replace("]",""); return arg; }())`;
  1618. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1619. .inception (@signal, @arguments) when (@signal = 1) { -webkit-transition-delay: @processing; }
  1620. .inception (@signal, @arguments) when (@signal = 2) { -moz-transition-delay: @processing; }
  1621. .inception (@signal, @arguments) when (@signal = 3) { -o-transition-delay: @processing; }
  1622. .inception (@signal, @arguments) when (@signal = 5) { transition-delay: @processing; }
  1623. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1624. .inception(@signal, @arguments);
  1625. }
  1626. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1627. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1628. // -- this comment must be here because of LESS bug
  1629. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1630. // --
  1631. .result(@arguments, @operaSignal, @opera, @operaLocal);
  1632. // --
  1633. .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  1634. }
  1635. // element{ .transition-delay(2s); }
  1636. // .user-select
  1637. .user-select(@arguments:auto){
  1638. // Local config for disabling properties
  1639. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1640. @mozLocal: true; // Firefox 4+
  1641. @msLocal: true; // IE 10+
  1642. .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
  1643. .inception (@signal, @arguments) when (@signal = 1) { -webkit-user-select: @arguments; }
  1644. .inception (@signal, @arguments) when (@signal = 2) { -moz-user-select: @arguments; }
  1645. .inception (@signal, @arguments) when (@signal = 4) { -ms-user-select: @arguments; }
  1646. .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
  1647. .inception(@signal, @arguments);
  1648. }
  1649. .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1650. .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
  1651. // -- this comment must be here because of LESS bug
  1652. .result(@arguments, @mozSignal, @moz, @mozLocal);
  1653. // --
  1654. .result(@arguments, @msSignal, @ms, @msLocal);
  1655. }
  1656. // element{ .user-select(text); }
  1657. // DEPRECATED mixins (must be supported because of old version of CSS Hat)
  1658. // .gradient (renamed background-image)
  1659. .gradient(...){
  1660. // Local config for disabling properties
  1661. @svg: true; // SVG gradient for IE9
  1662. @mozLocal: true; // Firefox 4+
  1663. @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
  1664. @operaLocal: true; // Opera 10.5+
  1665. @w3cLocal: true; // Unprefixed W3C syntax
  1666. @backgroundSVG: ~`(function(){function G(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c,d,e,f,g,h,i,j,k=0,l=0,m="",n=[];if(!a)return a;do c=a.charCodeAt(k++),d=a.charCodeAt(k++),e=a.charCodeAt(k++),j=c<<16|d<<8|e,f=j>>18&63,g=j>>12&63,h=j>>6&63,i=j&63,n[l++]=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);while(k<a.length);m=n.join("");var o=a.length%3;return(o?m.slice(0,o-3):m)+"===".slice(o||3)}var a="@{arguments}",b=null,c=!0,d=a.split(/,(?=\s*(?:linear|radial))/g),e=d.length,f=/top/,g=/right/,h=/bottom/,i=/left/,j=/to\s*top/,k=/to\s*right/,l=/to\s*bottom/,m=/to\s*left/,n=/45deg/,o=/-45deg/,p=/\d*deg/;for(var q=0;q<e;q++){if(/linear/.test(d[q])){d[q]=d[q].replace(/linear-gradient\s*\(/,'<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none">');if(f.test(d[q])&&!j.test(d[q])||l.test(d[q])||/180deg/.test(d[q])){var r=null;l.test(d[q])?r=l:/180deg/.test(d[q])?r=/180deg/:r=f,d[q]=d[q].replace(r,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="0%" y2="100%">')}else if(g.test(d[q])&&!k.test(d[q])||m.test(d[q])||/270deg/.test(d[q])){var r=null;m.test(d[q])?r=m:/270deg/.test(d[q])?r=/270deg/:r=g,d[q]=d[q].replace(r,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="100%" y1="0%" x2="0%" y2="0%">')}else if(h.test(d[q])&&!l.test(d[q])||j.test(d[q])||/[^\d]0deg/.test(d[q])){var r=null;j.test(d[q])?r=j:/0deg/.test(d[q])?r=/0deg/:r=h,d[q]=d[q].replace(r,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="100%" x2="0%" y2="0%">')}else if(i.test(d[q])&&!m.test(d[q])||k.test(d[q])||/90deg/.test(d[q])){var r=null;k.test(d[q])?r=k:/90deg/.test(d[q])?r=/90deg/:r=i,d[q]=d[q].replace(r,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="0%">')}else n.test(d[q])&&!o.test(d[q])?d[q]=d[q].replace(n,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="100%" x2="100%" y2="0%">'):o.test(d[q])?d[q]=d[q].replace(o,'<linearGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" x1="0%" y1="0%" x2="100%" y2="100%">'):c=!1}try{"".trim(),b=!0}catch(s){b=!1}b&&(d[q]=d[q].trim());if(/linear/.test(d[q])||/radial/.test(d[q])){d[q]=d[q].slice(0,-1),d[q]="url(data:image/svg+xml;base64--"+d[q]+'</linearGradient><rect x="0" y="0" width="1" height="1" fill="url(***)" /></svg>)';var t=d.join("@@@"),u=t.match(/rgba?\(\d+,\s*\d+,\s*\d+,\s*(?:0|1|\.\d+|0\.\d+)\)\s*\d*%*/g)||0,v=t.match(/hsla?\(\d+,\s*\d+%,\s*\d+%,\s*(?:0|1|\.\d+|0\.\d+)\)\s*\d*%*/g)||0,w=[],x=[];for(var y=0;y<u.length;y++)w[y]=u[y].replace(/,/g,"--");for(var z=0;z<v.length;z++)x[z]=v[z].replace(/,/g,"--");for(var A=0;A<u.length;A++)t=t.replace(u[A],w[A]);for(var B=0;B<v.length;B++)t=t.replace(v[B],x[B]);var C=t.split(",");for(var D=0;D<C.length;D++){C[D]=C[D].replace(/(#\w{3,6})\s*(\d*%*)/g,'<stop offset="$2" stop-color="$1" stop-opacity="1"/>').replace(/(rgba?\(\d+--\s*\d+--\s*\d+--\s*(0|1|\.\d+|0\.\d+)\))\s*(\d*%)*/g,'<stop offset="$3" stop-color="$1" stop-opacity="$2"/>').replace(/rgba/g,"rgb").replace(/(hsla?\(\d+--\s*\d+%--\s*\d+%--\s*(0|1|\.\d+|0\.\d+)\))\s*(\d*%)*/g,'<stop offset="$3" stop-color="$1" stop-opacity="$2"/>').replace(/hsla/g,"hsl").replace(/((?:aqua|black|blue|fuchsia|gray|grey|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow))\s*(\d*%)*/g,'<stop offset="$2" stop-color="$1" stop-opacity="1"/>').replace(/\*\*\*/,"#grad-ucgg-generated");try{"".trim(),b=!0}catch(s){b=!1}b&&(C[D]=C[D].trim())}C=C.toString().replace(/,/g,"").replace(/--/g,",").replace(/(rgb?\(\d+,\s*\d+,\s*\d+),\s*(?:0|1|\.\d+|0\.\d+)\)/g,"$1)").replace(/(hsl?\(\d+,\s*\d+%,\s*\d+%),\s*(?:0|1|\.\d+|0\.\d+)\)/g,"$1)")}}/radial/.test(C)&&(/((ellipse).*(center)|(circle).*(center))/g.test(C)?C=C.replace(/<\/linearGradient>/g,"</radialGradient>").replace(/radial-gradient[^<]+/g,'<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none"><radialGradient id="grad-ucgg-generated" gradientUnits="userSpaceOnUse" cx="50%" cy="50%" r="75%">').replace(/<rect x=\S+\d\S+ y=\S+\d\S+ width=\S+\d\S+ height=\S+\d\S+ fill=\S+\w\S+ \/>/g,'<rect x="-50" y="-50" width="101" height="101" fill="url(#grad-ucgg-generated)" />'):C=!1);var E=null;try{C=C.split("@@@");var F=0;for(F;F<C.length;F++)E=C[F].match(/<\?xml.*<\/svg>/),E=G(E.join("")),C[F]=C[F].replace(/(<\?xml.*<\/svg>)/,E)}catch(s){}return c?C:C=!1,C?C.toString().replace(/\[/g,"").replace(/\]/g,""):C}())`;
  1667. @backgroundMoz: ~`(function(){var a,b,c,d,e,f,g,h,i,j,k;a="@{arguments}",c=null,d=a.split(/,(?=\s*(?:linear|radial))/g),e=d.length,k=/to\s*top/,j=/to\s*right/,h=/to\s*bottom/,i=/to\s*left/,b=/\d*deg/,f=0;while(f<e){/linear/.test(d[f])?(d[f]=d[f].replace(/linear-gradient/,"-moz-linear-gradient"),k.test(d[f])?d[f]=d[f].replace(k,"bottom"):j.test(d[f])?d[f]=d[f].replace(j,"left"):h.test(d[f])?d[f]=d[f].replace(h,"top"):i.test(d[f])?d[f]=d[f].replace(i,"right"):b.test(d[f])&&(g=d[f].match(/\d*deg/),g=(parseInt(g)-90)*-1+"deg",d[f]=d[f].replace(b,g))):d[f]=d[f].replace(/radial-gradient/,"-moz-radial-gradient").replace(/,\s* \d*(px|%) \d*(px|%)/,", circle").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");try{"".trim(),c=!0}catch(l){c=!1}c&&(d[f]=d[f].trim()),f++}return d.toString().replace(/\[/g,"").replace(/\]/g,"");}())`;
  1668. @backgroundWebkit: ~`(function(){var a,b,c,d,e,f,g,h,i,j,k;a="@{arguments}",c=null,d=a.split(/,(?=\s*(?:linear|radial))/g),e=d.length,k=/to\s*top/,j=/to\s*right/,h=/to\s*bottom/,i=/to\s*left/,b=/\d*deg/,f=0;while(f<e){/linear/.test(d[f])?(d[f]=d[f].replace(/linear-gradient/,"-webkit-linear-gradient"),k.test(d[f])?d[f]=d[f].replace(k,"bottom"):j.test(d[f])?d[f]=d[f].replace(j,"left"):h.test(d[f])?d[f]=d[f].replace(h,"top"):i.test(d[f])?d[f]=d[f].replace(i,"right"):b.test(d[f])&&(g=d[f].match(/\d*deg/),g=(parseInt(g)-90)*-1+"deg",d[f]=d[f].replace(b,g))):d[f]=d[f].replace(/radial-gradient/,"-webkit-radial-gradient").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");try{"".trim(),c=!0}catch(l){c=!1}c&&(d[f]=d[f].trim()),f++}return d.toString().replace(/\[/g,"").replace(/\]/g,"");}())`;
  1669. @backgroundOpera: ~`(function(){var a,b,c,d,e,f,g,h,i,j,k;a="@{arguments}",c=null,d=a.split(/,(?=\s*(?:linear|radial))/g),e=d.length,k=/to\s*top/,j=/to\s*right/,h=/to\s*bottom/,i=/to\s*left/,b=/\d*deg/,f=0;while(f<e){/linear/.test(d[f])?(d[f]=d[f].replace(/linear-gradient/,"-o-linear-gradient"),k.test(d[f])?d[f]=d[f].replace(k,"bottom"):j.test(d[f])?d[f]=d[f].replace(j,"left"):h.test(d[f])?d[f]=d[f].replace(h,"top"):i.test(d[f])?d[f]=d[f].replace(i,"right"):b.test(d[f])&&(g=d[f].match(/\d*deg/),g=(parseInt(g)-90)*-1+"deg",d[f]=d[f].replace(b,g))):d[f]=d[f].replace(/radial-gradient/,"-o-radial-gradient").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");try{"".trim(),c=!0}catch(l){c=!1}c&&(d[f]=d[f].trim()),f++}return d.toString().replace(/\[/g,"").replace(/\]/g,"");})()`;
  1670. @backgroundW3C: ~`(function(){var a,b,c,d,e;a="@{arguments}",b=null,c=a.split(/,(?=\s*(?:linear|radial))/g),d=c.length,e=0;while(e<d){try{"".trim(),b=!0}catch(f){b=!1}b&&(c[e]=c[e].trim()),e++}return c.toString().replace(/\[/g,"").replace(/\]/g,"");}())`;
  1671. .result(@arguments, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) { background-image: @arguments; }
  1672. .result(@arguments, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
  1673. .result(@arguments, @boolean, @localBoolean, @property) when (@boolean = true) and (@localBoolean = true) and (isstring(@property)) { background-image: @arguments; }
  1674. .result(@arguments, @boolean, @localBoolean, @property) when not (@boolean = true), not (@localBoolean = true), not (isstring(@property)) { }
  1675. .result(@backgroundSVG, @svg, @svg, @backgroundSVG);
  1676. // -- this comment must be here because of LESS bug
  1677. .result(@backgroundMoz, @moz, @mozLocal);
  1678. // --
  1679. .result(@backgroundWebkit, @webkit, @webkitLocal);
  1680. // --
  1681. .result(@backgroundOpera, @opera, @operaLocal);
  1682. // --
  1683. .result(@backgroundW3C, @w3c, @w3cLocal);
  1684. }
  1685. // element{ .gradient(~"linear-gradient(to right, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%)"); }