@supernovaio/export-helpers
Version:
Supernova.io Export Helpers and Utilities
2 lines • 15.6 kB
JavaScript
(()=>{"use strict";var e={372:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ColorHelper=void 0;const o=t(688),a=t(722);class n{static formattedColorOrVariableName(e,r,t){let n,s,i;const l=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);if(l)n=t.tokenToVariableRef(l);else{const o=(0,a.sureOptionalReference)(e.color.referencedTokenId,r,t.allowReferences);o&&(s=t.tokenToVariableRef(o));const n=(0,a.sureOptionalReference)(e.opacity.referencedTokenId,r,t.allowReferences);n&&(i=t.tokenToVariableRef(n))}if(n)return n;if(!n&&!s&&!i)return this.formattedColor(e,t.colorFormat,t.decimals);switch(t.colorFormat){case o.ColorFormat.rgb:case o.ColorFormat.rgba:case o.ColorFormat.smartRgba:return this.colorToRgb(t.colorFormat,this.normalizedIntColor(e),e.opacity.measure,t.decimals,s,i);default:return this.formattedColor(e,t.colorFormat,t.decimals)}}static formattedColor(e,r,t=3){switch(r){case o.ColorFormat.hex6:case o.ColorFormat.hex8:case o.ColorFormat.hashHex6:case o.ColorFormat.hashHex8:case o.ColorFormat.smartHex:case o.ColorFormat.smartHashHex:return this.colorToHex(r,this.normalizedIntColor(e),e.opacity.measure);case o.ColorFormat.rgb:case o.ColorFormat.rgba:case o.ColorFormat.smartRgba:return this.colorToRgb(r,this.normalizedIntColor(e),e.opacity.measure,t,null,null);case o.ColorFormat.hsl:case o.ColorFormat.hsla:case o.ColorFormat.smartHsla:return this.colorToHsl(r,this.normalizedFractionalColor(e),e.opacity.measure,t);case o.ColorFormat.smartUIColor:return this.colorToUIColor(this.normalizedIntColor(e),e.opacity.measure,t)}}static colorToRgb(e,r,t,a,n,s){let i;return i=e===o.ColorFormat.rgba||e===o.ColorFormat.smartRgba&&t<1?`rgba(${n||`${r.r}, ${r.g}, ${r.b}`}, ${s||this.roundToDecimals(t,a)})`:`rgb(${n||`${r.r}, ${r.g}, ${r.b}`})`,i}static colorToHex(e,r,t){let a=`${this.pHex(r.r)}${this.pHex(r.g)}${this.pHex(r.b)}`;return(e===o.ColorFormat.hex8||e===o.ColorFormat.hashHex8||e===o.ColorFormat.smartHex&&t<1||e===o.ColorFormat.smartHashHex&&t<1)&&(a+=`${this.pHex(Math.round(255*t))}`),e!==o.ColorFormat.hashHex6&&e!==o.ColorFormat.hashHex8&&e!==o.ColorFormat.smartHashHex||(a=`#${a}`),a}static colorToHsl(e,r,t,a){const n=Math.max(r.r,r.g,r.b),s=Math.min(r.r,r.g,r.b);let i,l,c,T=(n+s)/2;if(n===s)i=l=0;else{const e=n-s;l=T>.5?e/(2-n-s):e/(n+s),n===r.r?i=(r.g-r.b)/e+(r.g<r.b?6:0):n===r.g?i=(r.b-r.r)/e+2:n===r.b&&(i=(r.r-r.g)/e+4),i/=6}return c=e===o.ColorFormat.hsla||e===o.ColorFormat.smartHsla&&t<1?`hsla(${Math.round(360*i)}%, ${Math.round(100*l)}%, ${Math.round(100*T)}%, ${this.roundToDecimals(t,a)})`:`hsl(${Math.round(360*i)}%, ${Math.round(100*l)}%, ${Math.round(100*T)}%)`,c}static colorToUIColor(e,r,t=3){let o=`UIColor(rgb: 0x${this.pHex(e.r)}${this.pHex(e.g)}${this.pHex(e.b)})`;return r<1&&(o+=`.withAlphaComponent(${r})`),o}static normalizedIntColor(e){return{r:Math.round(e.color.r),g:Math.round(e.color.g),b:Math.round(e.color.b)}}static normalizedFractionalColor(e,r=3){return{r:this.roundToDecimals(e.color.r/255,r),g:n.roundToDecimals(e.color.g/255,r),b:n.roundToDecimals(e.color.b/255,r)}}static roundToDecimals(e,r){const t=Math.pow(10,r),o=Math.round(e*t)/t;return parseFloat(o.toFixed(r))}static pHex(e){return e.toString(16).padStart(2,"0")}}r.ColorHelper=n},377:e=>{e.exports=require("@supernovaio/sdk-exporters")},423:e=>{e.exports=require("change-case")},424:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CSSHelper=void 0;const o=t(377),a=t(722),n=t(372);r.CSSHelper=class{static tokenToCSS(e,r,t){switch(e.tokenType){case o.TokenType.color:return this.colorTokenValueToCSS(e.value,r,t);case o.TokenType.border:return this.borderTokenValueToCSS(e.value,r,t);case o.TokenType.gradient:return this.gradientTokenValueToCSS(e.value,r,t);case o.TokenType.dimension:case o.TokenType.size:case o.TokenType.space:case o.TokenType.opacity:case o.TokenType.fontSize:case o.TokenType.lineHeight:case o.TokenType.letterSpacing:case o.TokenType.paragraphSpacing:case o.TokenType.borderWidth:case o.TokenType.radius:case o.TokenType.duration:case o.TokenType.zIndex:return this.dimensionTokenValueToCSS(e.value,r,t);case o.TokenType.shadow:return this.shadowTokenValueToCSS(e.value,r,t);case o.TokenType.fontWeight:return this.fontWeightTokenValueToCSS(e.value,r,t);case o.TokenType.fontFamily:case o.TokenType.productCopy:case o.TokenType.string:return this.stringTokenValueToCSS(e.value,r,t);case o.TokenType.textCase:case o.TokenType.textDecoration:case o.TokenType.visibility:return this.optionTokenValueToCSS(e.value,r,t,e.tokenType);case o.TokenType.blur:return this.blurTokenValueToCSS(e.value,r,t);case o.TokenType.typography:return this.typographyTokenValueToCSS(e.value,r,t);default:throw new o.UnreachableCaseError(e.tokenType,"Unsupported token type for transformation to CSS:")}}static colorTokenValueToCSS(e,r,t){return n.ColorHelper.formattedColorOrVariableName(e,r,t)}static borderTokenValueToCSS(e,r,t){const o=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);if(o)return t.tokenToVariableRef(o);const n=this.dimensionTokenValueToCSS(e.width,r,t),s=this.borderStyleToCSS(e.style),i=this.colorTokenValueToCSS(e.color,r,t);return this.borderPositionToCSS(e.position),`${n} ${s} ${i}`}static gradientTokenValueToCSS(e,r,t){return e.map((e=>this.gradientLayerToCSS(e,r,t))).join(", ")}static gradientLayerToCSS(e,r,t){const s=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);if(s)return t.tokenToVariableRef(s);const i=n.ColorHelper.roundToDecimals(e.to.x,t.decimals)-n.ColorHelper.roundToDecimals(e.from.x,t.decimals),l=n.ColorHelper.roundToDecimals(e.to.y,t.decimals)-n.ColorHelper.roundToDecimals(e.from.y,t.decimals),c=Math.atan2(l,i)*(180/Math.PI),T=()=>i>=0&&l>0||i>0&&l<=0||i<=0&&l<0?90+c:c-270;let p="";switch(e.type){case o.GradientType.linear:p=`linear-gradient(${T()}deg, `;break;case o.GradientType.radial:p="radial-gradient(circle, ";break;case o.GradientType.angular:p="conic-gradient(";break;default:p=`linear-gradient(${T()}deg, `}return`${p}${e.stops.map((e=>`${this.colorTokenValueToCSS(e.color,r,t)} ${n.ColorHelper.roundToDecimals(100*e.position,t.decimals)}%`)).join(", ")})`}static dimensionTokenValueToCSS(e,r,t){const o=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);return o?t.tokenToVariableRef(o):`${n.ColorHelper.roundToDecimals(e.measure,t.decimals)}${this.unitToCSS(e.unit)}`}static shadowTokenValueToCSS(e,r,t){return e.map((e=>this.shadowLayerToCSS(e,r,t))).join(", ")}static shadowLayerToCSS(e,r,t){const n=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);return n?t.tokenToVariableRef(n):`${e.type===o.ShadowType.inner?"inset ":""}${e.x}px ${e.y}px ${e.radius}px ${e.spread}px ${this.colorTokenValueToCSS({...e.color,...e.opacity&&{opacity:e.opacity}},r,t)}`}static fontWeightTokenValueToCSS(e,r,t){const o=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);return o?t.tokenToVariableRef(o):`${e.text}`}static stringTokenValueToCSS(e,r,t){const o=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);return o?t.tokenToVariableRef(o):`"${e.text}"`}static optionTokenValueToCSS(e,r,t,n){const s=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);return s?t.tokenToVariableRef(s):n===o.TokenType.textCase?this.textCaseToCSS(e.value):n===o.TokenType.textDecoration?this.textDecorationToCSS(e.value):e.value}static blurTokenValueToCSS(e,r,t){const o=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);return o?t.tokenToVariableRef(o):`blur(${this.dimensionTokenValueToCSS(e.radius,r,t)})`}static typographyTokenValueToCSS(e,r,t){const n=(0,a.sureOptionalReference)(e.referencedTokenId,r,t.allowReferences);if(n)return t.tokenToVariableRef(n);const s=(0,a.sureOptionalReference)(e.fontFamily.referencedTokenId,r,t.allowReferences),i=(0,a.sureOptionalReference)(e.fontWeight.referencedTokenId,r,t.allowReferences),l=(0,a.sureOptionalReference)(e.textDecoration.referencedTokenId,r,t.allowReferences),c=(0,a.sureOptionalReference)(e.textCase.referencedTokenId,r,t.allowReferences),T={fontFamily:s?t.tokenToVariableRef(s):e.fontFamily.text,fontWeight:i?t.tokenToVariableRef(i):e.fontWeight.text,textDecoration:l?t.tokenToVariableRef(l):e.textDecoration.value===o.TextDecoration.original?this.textDecorationToCSS(e.textDecoration.value):void 0,textCase:c?t.tokenToVariableRef(c):e.textCase.value===o.TextCase.original?this.textCaseToCSS(e.textCase.value):void 0,caps:e.textCase.value===o.TextCase.smallCaps,fontSize:this.dimensionTokenValueToCSS(e.fontSize,r,t),lineHeight:e.lineHeight?this.dimensionTokenValueToCSS(e.lineHeight,r,t):void 0},p=T.fontSize;return`${T.caps?"small-caps ":""}${T.fontWeight} ${T.lineHeight?`${p}/${T.lineHeight}`:p} ${s?T.fontFamily:`"${T.fontFamily}"`}`}static borderStyleToCSS(e){switch(e){case o.BorderStyle.dashed:return"dashed";case o.BorderStyle.dotted:return"dotted";case o.BorderStyle.solid:return"solid";case o.BorderStyle.groove:return"groove";default:return"solid"}}static borderPositionToCSS(e){switch(e){case o.BorderPosition.center:return"center";case o.BorderPosition.inside:return"inside";case o.BorderPosition.outside:default:return"outside"}}static unitToCSS(e){switch(e){case o.Unit.percent:return"%";case o.Unit.pixels:return"px";case o.Unit.rem:return"rem";case o.Unit.raw:return"";case o.Unit.ms:return"ms";default:return"px"}}static textCaseToCSS(e){switch(e){case o.TextCase.original:return"none";case o.TextCase.upper:return"uppercase";case o.TextCase.lower:return"lowercase";case o.TextCase.camel:case o.TextCase.smallCaps:return"capitalize"}}static textDecorationToCSS(e){switch(e){case o.TextDecoration.original:return"none";case o.TextDecoration.underline:return"underline";case o.TextDecoration.strikethrough:return"line-through"}}}},453:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.NetworkHelper=void 0,r.NetworkHelper=class{static async fetchAsText(e,r,t){return(await this.performFetch(e,r,t)).text()}static async fetchAsJSON(e,r,t){return(await this.performFetch(e,r,t)).json()}static async fetchAsData(e,r,t){return(await this.performFetch(e,r,t)).arrayBuffer()}static async performFetch(e,r,t){try{const o=await e.network.fetch(r,t);if(!o.ok)throw new Error(`Request failed with status ${o.status}, error: ${await o.text()}`);return o}catch(e){throw e}}}},503:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.NamingHelper=void 0;const o=t(423),a=t(675);class n{static codeSafeVariableNameForToken(e,r,t,o){let a=[];return t&&(a=[...t.path],t.isRoot||a.push(t.name)),a.push(e.name),o&&o.length>0&&a.unshift(o),n.codeSafeVariableName(a,r)}static codeSafeVariableName(e,r){let t="string"==typeof e?e:e.join(" ");switch(t=t.replaceAll(/[^a-zA-Z0-9_-]/g,"_"),r){case a.StringCase.camelCase:t=(0,o.camelCase)(t);break;case a.StringCase.capitalCase:t=(0,o.capitalCase)(t);break;case a.StringCase.constantCase:t=(0,o.constantCase)(t);break;case a.StringCase.dotCase:t=(0,o.dotCase)(t);break;case a.StringCase.headerCase:t=(0,o.headerCase)(t);break;case a.StringCase.noCase:t=(0,o.noCase)(t);break;case a.StringCase.paramCase:t=(0,o.paramCase)(t);break;case a.StringCase.pascalCase:t=(0,o.pascalCase)(t);break;case a.StringCase.pathCase:t=(0,o.pathCase)(t);break;case a.StringCase.sentenceCase:t=(0,o.sentenceCase)(t);break;case a.StringCase.snakeCase:t=(0,o.snakeCase)(t)}return r!==a.StringCase.snakeCase&&r!==a.StringCase.constantCase&&(t=t.replaceAll("_","")),t.match(/^[^a-zA-Z]/)&&(t="_"+t),t}static nameAsCSSVarReference(e){return`var(--${e})`}static nameAsCSSVarDeclaration(e){return`--${e}`}}r.NamingHelper=n},507:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Iterators=void 0;const o=t(377);r.Iterators=class{static allTokenTypes(){return[o.TokenType.color,o.TokenType.typography,o.TokenType.dimension,o.TokenType.size,o.TokenType.space,o.TokenType.opacity,o.TokenType.fontSize,o.TokenType.lineHeight,o.TokenType.letterSpacing,o.TokenType.paragraphSpacing,o.TokenType.borderWidth,o.TokenType.radius,o.TokenType.duration,o.TokenType.zIndex,o.TokenType.shadow,o.TokenType.border,o.TokenType.gradient,o.TokenType.string,o.TokenType.productCopy,o.TokenType.fontFamily,o.TokenType.fontWeight,o.TokenType.textCase,o.TokenType.textDecoration,o.TokenType.visibility,o.TokenType.blur]}static allDimensionTokenTypes(){return[o.TokenType.dimension,o.TokenType.size,o.TokenType.space,o.TokenType.opacity,o.TokenType.fontSize,o.TokenType.lineHeight,o.TokenType.letterSpacing,o.TokenType.paragraphSpacing,o.TokenType.borderWidth,o.TokenType.radius,o.TokenType.duration,o.TokenType.zIndex]}static allStringTokenTypes(){return[o.TokenType.string,o.TokenType.productCopy,o.TokenType.fontFamily,o.TokenType.fontWeight]}static allOptionTokenTypes(){return[o.TokenType.textCase,o.TokenType.textDecoration,o.TokenType.visibility]}}},675:(e,r)=>{var t;Object.defineProperty(r,"__esModule",{value:!0}),r.StringCase=void 0,(t=r.StringCase||(r.StringCase={})).camelCase="camelCase",t.capitalCase="capitalCase",t.constantCase="constantCase",t.dotCase="dotCase",t.headerCase="headerCase",t.noCase="noCase",t.paramCase="paramCase",t.pascalCase="pascalCase",t.pathCase="pathCase",t.sentenceCase="sentenceCase",t.snakeCase="snakeCase"},688:(e,r)=>{var t;Object.defineProperty(r,"__esModule",{value:!0}),r.ColorFormat=void 0,(t=r.ColorFormat||(r.ColorFormat={})).rgb="rgb",t.rgba="rgba",t.smartRgba="smartRgba",t.hex6="hex6",t.hex8="hex8",t.hashHex6="hashHex6",t.hashHex8="hashHex8",t.smartHashHex="smartHashHex",t.smartHex="smartHex",t.hsl="hsl",t.hsla="hsla",t.smartHsla="smartHsla",t.smartUIColor="smartUIColor"},722:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.sureOptionalReference=void 0,r.sureOptionalReference=function(e,r,t=!0){if(!e||!t)return null;const o=r.get(e);if(!o)throw new Error(`Trying to retrieve unknown referenced token ${e}`);return o}},751:(e,r,t)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.FileHelper=void 0;const o=t(377);r.FileHelper=class{static createCopyRemoteFile({relativePath:e,fileName:r,url:t}){return{path:e,name:r,type:o.OutputFileType.copyRemoteUrl,url:t}}static createTextFile({relativePath:e,fileName:r,content:t}){return{path:e,name:r,type:o.OutputFileType.text,content:t}}static createBinaryFile({relativePath:e,fileName:r,data:t}){return{path:e,name:r,type:o.OutputFileType.binary,data:t}}}}},r={};function t(o){var a=r[o];if(void 0!==a)return a.exports;var n=r[o]={exports:{}};return e[o](n,n.exports,t),n.exports}var o={};(()=>{var e=o;Object.defineProperty(e,"__esModule",{value:!0}),e.ColorFormat=e.StringCase=e.Iterators=e.CSSHelper=e.FileHelper=e.ColorHelper=e.NamingHelper=e.NetworkHelper=void 0;var r=t(453);Object.defineProperty(e,"NetworkHelper",{enumerable:!0,get:function(){return r.NetworkHelper}});var a=t(503);Object.defineProperty(e,"NamingHelper",{enumerable:!0,get:function(){return a.NamingHelper}});var n=t(372);Object.defineProperty(e,"ColorHelper",{enumerable:!0,get:function(){return n.ColorHelper}});var s=t(751);Object.defineProperty(e,"FileHelper",{enumerable:!0,get:function(){return s.FileHelper}});var i=t(424);Object.defineProperty(e,"CSSHelper",{enumerable:!0,get:function(){return i.CSSHelper}});var l=t(507);Object.defineProperty(e,"Iterators",{enumerable:!0,get:function(){return l.Iterators}});var c=t(675);Object.defineProperty(e,"StringCase",{enumerable:!0,get:function(){return c.StringCase}});var T=t(688);Object.defineProperty(e,"ColorFormat",{enumerable:!0,get:function(){return T.ColorFormat}})})();var a=exports;for(var n in o)a[n]=o[n];o.__esModule&&Object.defineProperty(a,"__esModule",{value:!0})})();
//# sourceMappingURL=helpers.js.map