PageSourceSearch

https://www.albany.org/dist/TypographyMixinEditor-Cv2y2nda.js

js albany.org collected 2026-10-02 02:53:33 UTC 12,601 bytes, 6 lines download raw bytes

1import{s as v,c as w}from"./devReload-CIPuOEC1.js";import{g as p,u as T,T as S}from"./typographyData-ZOqFoZyC.js";import"./tabId-hf7lJhSk.js";function N(n,a=1500){n instanceof HTMLElement&&(n.classList.remove("starter-flash-change"),n.offsetWidth,n.classList.add("starter-flash-change"),window.setTimeout(()=>{n.classList.remove("starter-flash-change")},a))}function d(n){return n&&n.replace(/^(ff|[tf])-/,"").split("-").filter(Boolean).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")}const k=/^\s*(-?(?:\d+\.?\d*|\.\d+))\s*(em|rem|ex|ch|px|pt|pc|cm|mm|in|q|vw|vh|vmin|vmax|%)\s*$/i;function z(n){if(typeof n!="string")return n;const a=n.match(k);if(!a)return n;const l=parseFloat(a[1]);if(isNaN(l))return n;const c=a[2]==="%"?l/100:l;return String(parseFloat(c.toFixed(4)))}function x(){return{extendTypographyMixin:"",extendFontMixin:"",fontSizeStrategy:"",fontSizeNormal:"",fontSizeClampMin:"",fontSizeClampValue:"",fontSizeClampUnit:"vw",fontSizeClampMax:"",lineHeight:"",tracking:"",textTransform:"",unknownLines:[]}}function m(n){const a=x(),l=new Set,c=new Set;for(let i=0;i<n.includes.length;i++)if(n.includes[i].name.startsWith("t-")){a.extendTypographyMixin=n.includes[i].name,l.add(i);break}for(let i=0;i<n.includes.length;i++)if(!l.has(i)&&n.includes[i].name.startsWith("f-")){a.extendFontMixin=n.includes[i].name,l.add(i);break}let e=-1;for(let i=0;i<n.includes.length;i++)l.has(i)||n.includes[i].name==="fontsize"&&(e=i);if(e>=0){const o=(n.includes[e].args??"").match(/(\d+)/);o&&(a.fontSizeStrategy="normal",a.fontSizeNormal=o[1]);for(let t=0;t<n.includes.length;t++)n.includes[t].name==="fontsize"&&l.add(t)}const r=n.properties["font-size"]??"";if(r.includes("clamp(")){const i=r.match(/clamp\(\s*#\{rem-calc\((\d+)px\)}\s*,\s*(\d+(?:\.\d+)?)(vw|cqw)\s*,\s*#\{rem-calc\((\d+)px\)}\s*\)/);i&&(a.fontSizeStrategy="clamp",a.fontSizeClampMin=i[1],a.fontSizeClampValue=i[2],a.fontSizeClampUnit=i[3],a.fontSizeClampMax=i[4]),c.add("font-size")}for(let i=0;i<n.includes.length;i++)if(!l.has(i)&&n.includes[i].name==="tracking"){a.tracking=n.includes[i].args??"",l.add(i);break}n.properties["line-height"]!==void 0&&(a.lineHeight=n.properties["line-height"],c.add("line-height")),n.properties["text-transform"]!==void 0&&(a.textTransform=n.properties["text-transform"],c.add("text-transform"));for(const i of n.raw.split(`
2`)){const o=i.trim();if(o===""||o==="}"||o.startsWith("@mixin "))continue;let t=!1;if(o.startsWith("@include ")){for(let s=0;s<n.includes.length;s++)if(l.has(s)){const f=n.includes[s],h=f.args?"@include "+f.name+"(":"@include "+f.name;if(o.startsWith(h)){t=!0;break}}}if(!t){for(const s of c)if(o.startsWith(s+":")||o.startsWith(s+" :")){t=!0;break}}t||a.unknownLines.push(o)}return a}const F=5;function C(n,a,l,c=0,e=new Set){const r=[];if(n.extendTypographyMixin){const t=[];if(t.push("// @include "+n.extendTypographyMixin+";"),c<F&&!e.has(n.extendTypographyMixin)){const s=a.find(f=>f.name===n.extendTypographyMixin);if(s){const f=new Set(e);f.add(n.extendTypographyMixin),t.push(...C(m(s),a,l,c+1,f))}}r.push(t)}if(n.extendFontMixin){const t=[];t.push("// @include "+n.extendFontMixin+";");const s=l.find(f=>f.name===n.extendFontMixin);s&&(s.familyVar&&t.push("font-family: $"+s.familyVar+";"),s.fontStyle&&t.push("font-style: "+s.fontStyle+";"),s.fontWeight&&t.push("font-weight: "+s.fontWeight+";")),r.push(t)}if(n.fontSizeStrategy==="normal"&&n.fontSizeNormal){const t=[];t.push("// @include fontsize("+n.fontSizeNormal+"px);");const s=parseFloat(n.fontSizeNormal);if(!isNaN(s)){const f=+(s/16).toFixed(4);t.push("font-size: "+f+"rem;")}r.push(t)}if(n.tracking!==""){const t=[];t.push("// @include tracking("+n.tracking+");");const s=parseFloat(n.tracking);if(!isNaN(s)){const f=+(s*.001).toFixed(4);t.push("letter-spacing: "+f+"em;")}r.push(t)}const i=[];if(n.fontSizeStrategy==="clamp"&&n.fontSizeClampMin&&n.fontSizeClampMax){const t=n.fontSizeClampValue||"4",s=n.fontSizeClampUnit||"vw";i.push("font-size: clamp(#{rem-calc("+n.fontSizeClampMin+"px)}, "+t+s+", #{rem-calc("+n.fontSizeClampMax+"px)});")}n.lineHeight&&i.push("line-height: "+n.lineHeight+";"),n.textTransform&&i.push("text-transform: "+n.textTransform+";");for(const t of n.unknownLines)i.push(t);i.length>0&&r.push(i);const o=[];for(let t=0;t<r.length;t++)t>0&&o.push(""),o.push(...r[t]);return o}const E="/actions/starter/typography/update-mixin";function u(n){return{extendTypographyMixin:n.extendTypographyMixin,extendFontMixin:n.extendFontMixin,fontSizeStrategy:n.fontSizeStrategy,fontSizeNormal:n.fontSizeNormal,fontSizeClampMin:n.fontSizeClampMin,fontSizeClampValue:n.fontSizeClampValue,fontSizeClampUnit:n.fontSizeClampUnit,fontSizeClampMax:n.fontSizeClampMax,lineHeight:n.lineHeight,tracking:n.tracking,textTransform:n.textTransform,unknownLines:[...n.unknownLines]}}function y(n,a){return n.extendTypographyMixin===a.extendTypographyMixin&&n.extendFontMixin===a.extendFontMixin&&n.fontSizeStrategy===a.fontSizeStrategy&&n.fontSizeNormal===a.fontSizeNormal&&n.fontSizeClampMin===a.fontSizeClampMin&&n.fontSizeClampValue===a.fontSizeClampValue&&n.fontSizeClampUnit===a.fontSizeClampUnit&&n.fontSizeClampMax===a.fontSizeClampMax&&n.lineHeight===a.lineHeight&&n.tracking===a.tracking&&n.textTransform===a.textTransform&&n.unknownLines.join(`
3`)===a.unknownLines.join(`
4`)}const L=5;function M(n,a,l){const c=[a],e=new Set([n]);let r=a;for(let o=0;o<L;o++){const t=r.extendTypographyMixin;if(!t||e.has(t))break;e.add(t);const s=l.find(h=>h.name===t);if(!s)break;const f=m(s);c.push(f),r=f}const i={extendTypographyMixin:a.extendTypographyMixin,extendFontMixin:"",fontSizeStrategy:"",fontSizeNormal:"",fontSizeClampMin:"",fontSizeClampValue:"",fontSizeClampUnit:"vw",fontSizeClampMax:"",lineHeight:"",tracking:"",textTransform:"",unknownLines:[]};for(let o=c.length-1;o>=0;o--){const t=c[o];t.extendFontMixin&&(i.extendFontMixin=t.extendFontMixin),t.fontSizeStrategy&&(i.fontSizeStrategy=t.fontSizeStrategy,i.fontSizeNormal=t.fontSizeNormal,i.fontSizeClampMin=t.fontSizeClampMin,i.fontSizeClampValue=t.fontSizeClampValue,i.fontSizeClampUnit=t.fontSizeClampUnit,i.fontSizeClampMax=t.fontSizeClampMax),t.lineHeight&&(i.lineHeight=t.lineHeight),t.tracking&&(i.tracking=t.tracking),t.textTransform&&(i.textTransform=t.textTransform)}return i}function H(n){const a=[];
4n.extendTypographyMixin&&a.push("@include "+n.extendTypographyMixin+";"),n.extendFontMixin&&a.push("@include "+n.extendFontMixin+";"),n.fontSizeStrategy==="normal"&&n.fontSizeNormal&&a.push("@include fontsize("+n.fontSizeNormal+"px);"),n.tracking!==""&&a.push("@include tracking("+n.tracking+");");const l=a.length>0,c=n.fontSizeStrategy==="clamp"||n.lineHeight!==""||n.textTransform!==""||n.unknownLines.length>0;if(l&&c&&a.push(""),n.fontSizeStrategy==="clamp"&&n.fontSizeClampMin&&n.fontSizeClampMax){const e=n.fontSizeClampValue||"4",r=n.fontSizeClampUnit||"vw";a.push("font-size: clamp(#{rem-calc("+n.fontSizeClampMin+"px)}, "+e+r+", #{rem-calc("+n.fontSizeClampMax+"px)});")}n.lineHeight!==""&&a.push("line-height: "+z(n.lineHeight)+";"),n.textTransform!==""&&a.push("text-transform: "+n.textTransform+";");for(const e of n.unknownLines)a.push(e);return a.length===0&&a.push("//"),a.join(`
5`)}function j(n={name:""}){const a=p(),l=a.typographyMixins.find(e=>e.name===n.name),c=m(l||{name:n.name,includes:[],properties:{},raw:""});return{mixinName:n.name,fontFamilyVars:a.fontFamilyVars,fontMixins:a.fontMixins,_mixinsRev:0,...c,initial:u(c),expanded:!1,saving:!1,error:null,_onMixinUpdated:null,_onMixinsChanged:null,init(){const e=this;e.$watch("lineHeight",o=>{const t=z(o);t!==o&&(e.lineHeight=t)});const r=o=>{const t=o.detail;if(!t||t.name!==e.mixinName||!t.mixin||e.saving||e.isDirty())return;const s=m(t.mixin);Object.assign(e,s),e.initial=u(s),e.$root&&N(e.$root)};e._onMixinUpdated=r,window.addEventListener("typography-mixin-updated",r);const i=()=>{e._mixinsRev+=1};e._onMixinsChanged=i,window.addEventListener(S,i)},destroy(){const e=this;e._onMixinUpdated&&(window.removeEventListener("typography-mixin-updated",e._onMixinUpdated),e._onMixinUpdated=null),e._onMixinsChanged&&(window.removeEventListener(S,e._onMixinsChanged),e._onMixinsChanged=null)},toggle(){const e=this;e.expanded=!e.expanded,e.expanded&&queueMicrotask(()=>document.dispatchEvent(new CustomEvent("checkAsync")))},isDirty(){const e=this;return!y(e,e.initial)},canClear(){return!y(this,x())},revert(){const e=this,r=u(e.initial);Object.assign(e,r),e.error=null},clear(){const e=this;Object.assign(e,x()),e.error=null},duplicateFrom(){const e=this;if(!e.extendTypographyMixin)return;const r=p().typographyMixins,i=r.find(t=>t.name===e.extendTypographyMixin);if(!i)return;const o=M(i.name,m(i),r);e.extendFontMixin=o.extendFontMixin,e.fontSizeStrategy=o.fontSizeStrategy,e.fontSizeNormal=o.fontSizeNormal,e.fontSizeClampMin=o.fontSizeClampMin,e.fontSizeClampValue=o.fontSizeClampValue,e.fontSizeClampUnit=o.fontSizeClampUnit,e.fontSizeClampMax=o.fontSizeClampMax,e.lineHeight=o.lineHeight,e.tracking=o.tracking,e.textTransform=o.textTransform,e.extendTypographyMixin=""},async save(){const e=this;e.saving=!0,e.error=null;try{const r=H(e);await v();const o=await(await fetch(E,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:w({mixinName:e.mixinName,newBody:r})})).json();if(o.success){const t=o.mixin??null;if(t){T(t);const s=m(t);Object.assign(e,s),e.initial=u(s)}document.documentElement.dispatchEvent(new CustomEvent("toast",{detail:{type:"success",content:"Mixin saved."}}))}else e.error=o.error??"Failed to save mixin."}catch{document.documentElement.dispatchEvent(new CustomEvent("toast",{detail:{type:"error",content:"Failed to save mixin."}}))}finally{e.saving=!1}},resolvedFields(){const e=this;return M(e.mixinName,u(e),p().typographyMixins)},getPreviewStyle(e){const r=this,i=r.resolvedFields(),o=[];if(i.extendFontMixin){const t=r.fontMixins.find(s=>s.name===i.extendFontMixin);if(t){const s=r.fontFamilyVars.find(f=>f.handle===t.familyVar);s&&o.push("font-family: "+s.fullValue),o.push("font-weight: "+t.fontWeight),o.push("font-style: "+t.fontStyle)}}if(i.fontSizeStrategy==="clamp"){const t=e==="small"?i.fontSizeClampMin:i.fontSizeClampMax;t&&o.push("font-size: "+t+"px")}else i.fontSizeStrategy==="normal"&&i.fontSizeNormal&&o.push("font-size: "+i.fontSizeNormal+"px");if(i.lineHeight&&o.push("line-height: "+i.lineHeight),i.tracking){const t=parseFloat(i.tracking);isNaN(t)||o.push("letter-spacing: "+t*.001+"em")}return i.textTransform&&o.push("text-transform: "+i.textTransform),o.join("; ")},getCodePreview(){const e=this;e._mixinsRev;const r=u(e),i=p().typographyMixins,o=new Set([e.mixinName]),t=C(r,i,e.fontMixins,0,o),s=[];if(s.push("@mixin "+e.mixinName+" {"),t.length===0)s.push("    //");else for(const f of t)s.push(f===""?"":"    "+f);return s.push("}"),s.join(`
6`)},getSummary(){const e=this,r=[];return e.extendTypographyMixin&&r.push(d(e.extendTypographyMixin)),e.extendFontMixin&&r.push(d(e.extendFontMixin)),e.fontSizeStrategy==="clamp"?r.push("clamp"):e.fontSizeStrategy==="normal"&&e.fontSizeNormal&&r.push(e.fontSizeNormal+"px"),r.join(" · ")},fontMixinNames(){return this.fontMixins.map(e=>e.name)}
6,friendlyName(e){return d(e)},typographyMixinNames(){const e=this;return e._mixinsRev,p().typographyMixins.map(r=>r.name).filter(r=>r!==e.mixinName)},typographyMixinsBySection(){const e=this;e._mixinsRev;const r=[],i=new Map;for(const o of p().typographyMixins){if(o.name===e.mixinName)continue;const t=o.sectionComment||"Other";if(!i.has(t)){const s=[];i.set(t,s),r.push({section:t,names:s})}i.get(t).push(o.name)}return r},filteredTypographyMixinsBySection(e){const i=this.typographyMixinsBySection(),o=e.trim().toLowerCase();if(!o)return i;const t=[];for(const s of i){const h=s.section.toLowerCase().includes(o)?s.names:s.names.filter(g=>d(g).toLowerCase().includes(o)||g.toLowerCase().includes(o));h.length>0&&t.push({section:s.section,names:h})}return t},filteredFontMixinNames(e){const i=this.fontMixins.map(t=>t.name),o=e.trim().toLowerCase();return o?i.filter(t=>d(t).toLowerCase().includes(o)||t.toLowerCase().includes(o)):i},firstTypographyMixinMatch(e){const r=this;for(const i of r.filteredTypographyMixinsBySection(e))for(const o of i.names)if(!r.wouldCreateCycle(o))return o;return null},wouldCreateCycle(e){const r=this;r._mixinsRev;const i=new Map(p().typographyMixins.map(s=>[s.name,s])),o=[e],t=new Set;for(;o.length>0;){const s=o.pop();if(s===r.mixinName)return!0;if(!t.has(s)){t.add(s);for(const f of i.get(s)?.includes??[])o.push(f.name)}}return!1},isClamp(){return this.resolvedFields().fontSizeStrategy==="clamp"}}}export{j as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.