@codename/deck 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/template.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var ot=/^[a-z][a-z0-9-]{0,31}$/,Lt=/^(auto|min-content|max-content|\d{1,2}(\.\d)?fr|\d{1,3}%)$/,_t=["Title Slide","Title and Content","Section Header","Two Content","Comparison","Title Only","Blank","Content with Caption","Picture with Caption"],kt={align:["start","center","end"],justify:["start","center","end"],paper:["paper","fill","ink","soft"],title:["normal","large","huge"],logo:["small","big","none"]},jt=["top-end","top-start","bottom-end","bottom-start"],ut=t=>typeof t=="string"&&t.length<=7e5&&/^data:image\/(png|jpeg|gif|webp|svg\+xml);base64,[a-z0-9+/]+=*$/i.test(t)?t:null,dt=t=>typeof t=="string"&&t.length<=3145728&&/^data:image\/(?:(?:png|jpeg|gif|webp|svg\+xml);base64,[a-z0-9+/]+=*|svg\+xml,[\w.!~*'()%/+=-]*)$/i.test(t)?t:null;var mt={name:"standard",tokens:{},pictures:{},layouts:Object.fromEntries(Object.entries({default:{label:{en:"Title and content",fr:"Titre et contenu"},pptx:"Title and Content"},cover:{label:{en:"Cover",fr:"Couverture"},justify:"center",paper:"fill",title:"huge",logo:"big",pptx:"Title Slide",numbered:!1},intro:{label:{en:"Introduction",fr:"Introduction"},justify:"center",paper:"fill",title:"large",logo:"big",pptx:"Title Slide",numbered:!1},section:{label:{en:"Section",fr:"Section"},justify:"center",paper:"ink",title:"huge",pptx:"Section Header",numbered:!1},center:{label:{en:"Centred",fr:"Centré"},justify:"center",align:"center",pptx:"Title Only"},statement:{label:{en:"Statement",fr:"Affirmation"},justify:"center",align:"center",title:"large",pptx:"Title Only"},fact:{label:{en:"Big number",fr:"Grand chiffre"},justify:"center",align:"center",title:"huge",pptx:"Title Only"},quote:{label:{en:"Quote",fr:"Citation"},justify:"center",pptx:"Title Only"},end:{label:{en:"Closing",fr:"Clôture"},justify:"center",align:"center",paper:"fill",title:"large",logo:"big",pptx:"Title Slide",numbered:!1},full:{label:{en:"Full",fr:"Plein cadre"},logo:"none",pptx:"Blank",numbered:!1},none:{label:{en:"Blank",fr:"Vide"},logo:"none",pptx:"Blank",numbered:!1},"two-cols":{label:{en:"Two columns",fr:"Deux colonnes"},slots:["default","right"],areas:"default right",columns:"1fr 1fr",pptx:"Two Content"},"two-cols-header":{label:{en:"Comparison",fr:"Comparaison"},slots:["default","left","right","bottom"],areas:"default default | left right | bottom bottom",columns:"1fr 1fr",rows:"auto 1fr auto",pptx:"Comparison"},"three-cols":{label:{en:"Three columns",fr:"Trois colonnes"},slots:["default","left","middle","right"],areas:"default default default | left middle right",columns:"1fr 1fr 1fr",rows:"auto 1fr",pptx:"Comparison"},"image-left":{label:{en:"Picture left",fr:"Image à gauche"},pptx:"Picture with Caption",justify:"center"},"image-right":{label:{en:"Picture right",fr:"Image à droite"},pptx:"Picture with Caption",justify:"center"},image:{label:{en:"Picture",fr:"Image"},logo:"none",pptx:"Blank",numbered:!1}}).map(([t,e])=>[t,St(e).layout]))};function St(t){let e=[];if(!t||typeof t!="object")return{layout:null,problems:["not a layout"]};let r={},a=Array.isArray(t.slots)||typeof t.slots=="string"?[t.slots].flat().map(String):t.slots&&typeof t.slots=="object"?Object.entries(t.slots).map(([u,S])=>(S&&typeof S=="object"&&(r[u]=vt(S)),u==="title"?"default":u)):["default"],n=[...new Set(a)];if(!n.every(u=>ot.test(u)))return{layout:null,problems:["a slot name is not a-z, 0-9 and -"]};n.includes("default")||n.unshift("default");let s=(Array.isArray(t.areas)?t.areas.map(u=>[u].flat().join(" ")):String(t.areas??n.join(" ")).split(/\||\n/)).map(u=>u.trim().replace(/^"|"$/g,"").split(/\s+/)).filter(u=>u.length&&u[0]),p=s[0]?.length??0;if(!s.length||s.some(u=>u.length!==p)||s.flat().some(u=>u!=="."&&!n.includes(u)))return{layout:null,problems:["areas are not a rectangle of its slots"]};for(let u of n){let S=s.flatMap((C,F)=>C.map((j,A)=>[j,A,F])).filter(([C])=>C===u);if(!S.length){u!=="default"&&e.push(`slot ${u} has no area`);continue}let O=S.map(C=>C[1]),M=S.map(C=>C[2]);if(S.length!==(Math.max(...O)-Math.min(...O)+1)*(Math.max(...M)-Math.min(...M)+1))return{layout:null,problems:[`slot ${u} is not a rectangle`]}}let l=(u,S)=>{let O=u===void 0?Array(S).fill("1fr"):(Array.isArray(u)?u:String(u).split(/\s+/)).map(String);return O.length===S&&O.every(M=>Lt.test(M))?O:null},c=l(t.columns,p),f=l(t.rows,s.length);if(!c||!f)return{layout:null,problems:["columns or rows are not tracks deck knows (auto, 1fr, 40%…), one per column or row"]};let g=(u,S)=>{let O=String(t[u]??S);return kt[u].includes(O)?O:(e.push(`${u} ${O} is not one of ${kt[u].join(", ")}`),S)},k=typeof t.label=="string"||t.label&&typeof t.label=="object"?t.label:void 0,b=Array.isArray(t.art)&&t.art.length<=8&&t.art.every(u=>typeof u=="string"&&ot.test(u))?t.art:void 0;t.art!==void 0&&!b&&e.push("art is not 8 names at most");let y=u=>typeof u=="string"?u.slice(0,300):void 0;return{layout:{label:k,intent:y(t.intent),use_when:y(t.use_when),avoid_when:y(t.avoid_when),slots:n,budgets:r,areas:s,columns:c,rows:f,align:g("align","start"),justify:g("justify","start"),paper:g("paper","paper"),title:g("title","normal"),logo:g("logo","small"),pptx:_t.includes(t.pptx)?t.pptx:n.length>1?"Comparison":"Title and Content",numbered:t.numbered!==!1,art:b},problems:e}}function vt(t){let e={};for(let r of["max_words","max_chars","item_max_words","heading_max_words"])Number.isInteger(t[r])&&t[r]>0&&(e[r]=t[r]);return Array.isArray(t.items)&&t.items.length===2&&t.items.every(Number.isInteger)&&(e.items=t.items),typeof t.required=="boolean"&&(e.required=t.required),typeof t.kind=="string"&&/^[a-z-]{1,20}$/.test(t.kind)&&(e.kind=t.kind),e}function Gt(t){if(!t||typeof t!="object")return{};if(!JSON.stringify(t).includes('"$value"'))return t;let e=k=>k&&typeof k=="object"&&"$value"in k?k.$value:k,r=k=>{let b=e(k);return typeof b=="string"?b:typeof b?.hex=="string"?`${b.hex}${typeof b.alpha=="number"&&b.alpha<1?Math.round(Math.max(0,b.alpha)*255).toString(16).padStart(2,"0"):""}`:void 0},a=k=>{let b=e(k);return Array.isArray(b)?b.map(String):typeof b=="string"?[b]:void 0},n={bg:"paper",background:"paper",paper:"paper",fg:"ink",text:"ink",ink:"ink",accent:"primary",primary:"primary",muted:"muted",surface:"soft",soft:"soft"},o=k=>Object.fromEntries(Object.entries(k??{}).filter(([b])=>b in n).map(([b,y])=>[n[b],r(y)]).filter(([,b])=>b)),s=t.color??t.colour??{},p={...o(s),...o(s.light)},l=o(s.dark);Object.keys(l).length&&(p.dark=l);let c=t.font??t.fontFamily??{},f=a(c.heading??c.display??c.sans),g=a(c.body??c.text??c.sans);return(f||g)&&(p.fonts={heading:f??g,body:g??f}),p}function Mt(...t){let e={name:"standard",tokens:{},layouts:{...mt.layouts},pictures:{}},r=[];for(let a of t)if(!(!a||typeof a!="object")){if(typeof a.name=="string"&&(e.name=a.name),a.tokens&&typeof a.tokens=="object"){let n=Gt(a.tokens),o=n.dark&&typeof n.dark=="object"?{...e.tokens.dark,...n.dark}:e.tokens.dark;e.tokens={...e.tokens,...n,...o&&{dark:o}}}for(let[n,o]of Object.entries(a.pictures??{}))ot.test(n)&&dt(o)?e.pictures[n]=o:r.push(`picture ${n}: not a picture inside the kit`);for(let[n,o]of Object.entries(a.layouts??a.types??{})){if(!ot.test(n)){r.push(`layout ${n}: not a-z, 0-9 and -`);continue}if(o===!1){n!=="default"&&delete e.layouts[n];continue}let{layout:s,problems:p}=St(o);r.push(...p.map(l=>`layout ${n}: ${l}`)),s&&(e.layouts[n]=s)}}for(let[a,n]of[["logo",e.tokens],["dark logo",e.tokens.dark]])n?.logo!==void 0&&!ut(n.logo)&&(r.push(`${a}: not a picture inside the kit (PNG, JPEG, GIF, WebP or SVG as data:, 512 KB at most)`),delete n.logo);return e.tokens.logoAt!==void 0&&!jt.includes(e.tokens.logoAt)&&(r.push(`logoAt ${e.tokens.logoAt} is not one of ${jt.join(", ")}`),delete e.tokens.logoAt),{kit:e,problems:r}}function tt(t,e=[255,255,255]){let r=String(t).trim(),a=/^#?([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.exec(r)?.[1],n=/^rgba?\(([^)]*)\)$/i.exec(r)?.[1].split(/[\s,/]+/).filter(Boolean),o=(f,g)=>f.endsWith("%")?parseFloat(f)/100*g:Number(f),[s,p,l,c=1]=a?(a.length<5?[...a].map(f=>f+f):a.match(/../g)).map((f,g)=>parseInt(f,16)/(g>2?255:1)):n?.length===3||n?.length===4?n.map((f,g)=>o(f,g>2?1:255)):[];return s!==void 0&&[s,p,l].every(f=>f>=0&&f<=255)&&c>=0&&c<=1?Ht(Wt(e,[s,p,l],c)):null}var Ht=t=>t.map(e=>Math.round(Math.max(0,Math.min(255,e)))),Wt=(t,e,r)=>t.map((a,n)=>a+(e[n]-a)*r);function Ct(t){let[e,r,a]=t.map(n=>{let o=n/255;return o<=.03928?o/12.92:((o+.055)/1.055)**2.4});return .2126*e+.7152*r+.0722*a}function et(t,e){let[r,a]=[Ct(t),Ct(e)].sort((n,o)=>o-n);return(r+.05)/(a+.05)}var Vt={"Title Slide":"cover","Title and Content":"default","Section Header":"section","Two Content":"two-cols-header","Title Only":"center",Blank:"none"},qt=["Title Slide","Title and Content","Section Header","Two Content","Comparison","Title Only","Blank","Content with Caption","Picture with Caption"],Pt={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml"},Kt={...Pt,webp:"image/webp",bmp:"image/bmp"},Ot=2,Jt=3,V=12700;function Zt(t){let e=new DataView(t.buffer,t.byteOffset,t.byteLength),r=t.length-22;for(;r>=0&&e.getUint32(r,!0)!==101010256;)r--;if(r<0)throw new Error("not a PowerPoint file");let a=new Map;for(let n=e.getUint32(r+16,!0),o=e.getUint16(r+10,!0);o>0;o--){let s=e.getUint16(n+10,!0),p=e.getUint32(n+20,!0),l=new TextDecoder().decode(t.subarray(n+46,n+46+e.getUint16(n+28,!0))),c=e.getUint32(n+42,!0),f=c+30+e.getUint16(c+26,!0)+e.getUint16(c+28,!0),g=t.subarray(f,f+p);a.set(l,async()=>s===0?g:new Uint8Array(await new Response(new Blob([g]).stream().pipeThrough(new DecompressionStream("deflate-raw"))).arrayBuffer())),n+=46+e.getUint16(n+28,!0)+e.getUint16(n+30,!0)+e.getUint16(n+32,!0)}return a}var m=(t,e)=>new RegExp(`\\b${e}="([^"]*)"`).exec(t)?.[1],gt=(t,e)=>new Map([...t.matchAll(/<Relationship\b[^>]*>/g)].map(([r])=>[String(m(r,"Id")),new URL(String(m(r,"Target")),`file:///${e}/`).pathname.slice(1)]));async function me(t,{name:e}={}){let r=Zt(t),a=[],n=async d=>new TextDecoder().decode(await(r.get(d)?.()??new Uint8Array)),o=[...r.keys()].filter(d=>/^(ppt|theme)\/slideMasters\/slideMaster\d+\.xml$/.test(d)).sort()[0];if(!o)throw new Error("no slide master: not a PowerPoint template");let s=o.split("/")[0],p=await n(o),l=gt(await n(o.replace(/([^/]+)$/,"_rels/$1.rels")),`${s}/slideMasters`),c=[...l.values()].find(d=>/theme\/theme\d+\.xml$/.test(d))??`${s}/theme/theme1.xml`,f=await n(c),[g,k]=(d=>[Number(m(d,"cx")??12192e3),Number(m(d,"cy")??6858e3)])(/<p:sldSz\b[^>]*>/.exec(await n(`${s}/presentation.xml`))?.[0]??""),b=d=>Object.fromEntries([...(/<(?:p:clrMap|a:overrideClrMapping)\b[^>]*>/.exec(d)?.[0]??"").matchAll(/(\w+)="(\w+)"/g)].map(([,w,N])=>[w,N])),y={bg1:"lt1",tx1:"dk1",bg2:"lt2",tx2:"dk2",...b(p)},u=Object.fromEntries([...f.matchAll(/<a:(dk1|lt1|dk2|lt2|accent[1-6]|hlink|folHlink)>\s*<a:(?:srgbClr\b[^>]*\bval|sysClr\b[^>]*\blastClr)="([0-9A-Fa-f]{6})"/g)].map(([,d,w])=>[d,`#${w.toLowerCase()}`])),S=d=>m(new RegExp(`<a:${d}>[\\s\\S]*?<a:latin\\b[^>]*>`).exec(f)?.[0].replace(/^[\s\S]*<a:latin/,"")??"","typeface"),[O,M]=[S("majorFont"),S("minorFont")].map(d=>d&&!d.startsWith("+")?[d,"ui-sans-serif","system-ui","sans-serif"]:null),C=Object.fromEntries([["paper",y.bg1],["ink",y.tx1],["primary","accent1"],["muted",y.tx2],["soft",y.bg2]].filter(([,d])=>u[d]).map(([d,w])=>[d,u[w]])),F=[1,2,3,4,5,6].map(d=>u[`accent${d}`]).filter(Boolean);F.length&&(C.series=F),(O||M)&&(C.fonts={heading:O??M,body:M??O});let j="";for(let[d]of p.matchAll(/<p:pic>[\s\S]*?<\/p:pic>/g)){let w=l.get(String(m(/<a:blip\b[^>]*>/.exec(d)?.[0]??"","r:embed"))),N=Pt[/\.(\w+)$/.exec(w??"")?.[1].toLowerCase()??""];if(!w||!N||!r.has(w))continue;let B=await r.get(w)?.(),D=B&&`data:${N};base64,${It(B)}`;if(!ut(D)){a.push(`the logo ${w.split("/").pop()} is larger than 512 KB`);break}let[K,rt]=(W=>[Number(m(W,"x")??0),Number(m(W,"y")??0)])(/<a:off\b[^>]*>/.exec(d)?.[0]??"");Object.assign(C,{logo:D,logoAt:`${rt<k/2?"top":"bottom"}-${K<g/2?"start":"end"}`}),j=w;break}let A=d=>z(new RegExp(`<a:${d}>([\\s\\S]*?)</a:${d}>`).exec(f)?.[1]??"").map(w=>w.xml),I={scheme:Object.fromEntries(Object.entries(u).map(([d,w])=>[d,tt(w.slice(1))])),map:y,rels:l,files:r,size:[g/V,k/V],themeRels:gt(await n(c.replace(/([^/]+)$/,"_rels/$1.rels")),c.replace(/\/[^/]+$/,"")),styles:{fill:A("fillStyleLst"),line:A("lnStyleLst"),bg:A("bgFillStyleLst")},faces:{major:S("majorFont")??"",minor:S("minorFont")??""},pictures:new Map,used:new Set,noted:new Set,ids:{n:0},defs:[]},E=new Map,G=d=>E.get(JSON.stringify(d))??E.set(JSON.stringify(d),(w=>it(At(p),{...I,map:d,used:w,ids:{n:0}}).then(N=>({svg:N,used:w})))(new Set)).get(JSON.stringify(d)),X=Object.fromEntries([[y.bg2,"soft"],["accent1","fill"],[y.tx1,"ink"],[y.bg1,"paper"]].filter(([d])=>u[d]).map(([d,w])=>[u[d],w])),[h,x]=[I.scheme[y.tx1]??[0,0,0],I.scheme[y.bg1]??[255,255,255]],P=d=>[...d.matchAll(/<p:sp>[\s\S]*?<\/p:sp>/g)].flatMap(([w])=>{let N=/<p:ph\b[^>]*>/.exec(w)?.[0];if(!N)return[];let B=/<a:off\b[^>]*>/.exec(w)?.[0],D=/<a:ext\b[^>]*>/.exec(w)?.[0];return[{type:m(N,"type")??"body",name:m(/<p:cNvPr\b[^>]*>/.exec(w)?.[0]??"","name")??"",box:B&&D?[Number(m(B,"x")),Number(m(B,"y")),Number(m(D,"cx")),Number(m(D,"cy"))]:null}]}),T=P(p),U={},R={},q=(d,w)=>{let N=d?dt(le(d,I.size)):null;if(d&&!N&&a.push(`layout ${w}: a layer of its art is larger than ${Jt} MB`),!N)return[];let B=2166136261;for(let D=0;D<N.length;D++)B=Math.imul(B^N.charCodeAt(D),16777619)>>>0;return R[`art-${B.toString(36)}`]=N,[`art-${B.toString(36)}`]},Y=[...l.values()].filter(d=>/slideLayouts\/slideLayout\d+\.xml$/.test(d)).sort((d,w)=>Number(/(\d+)\.xml$/.exec(d)?.[1])-Number(/(\d+)\.xml$/.exec(w)?.[1]));for(let d of Y){let w=await n(d),N=(m(/<p:cSld\b[^>]*>/.exec(w)?.[0]??"","name")??"").replace(/&amp;/g,"&").trim(),B=P(w).filter(v=>!["dt","ftr","sldNum"].includes(v.type)).map(v=>({...v,box:v.box??T.find(wt=>wt.type===v.type||v.type==="ctrTitle"&&wt.type==="title")?.box??null})).filter(v=>v.box),D=Vt[N]??(N.toLowerCase().normalize("NFKD").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/^(?=\d)/,"l-").slice(0,32)||`layout-${Y.indexOf(d)+1}`),K={...I,map:{...y,...b(w)},rels:gt(await n(d.replace(/([^/]+)$/,"_rels/$1.rels")),d.replace(/\/[^/]+$/,"")),used:new Set,ids:{n:0}},rt=Nt(w),W=await se(rt??Nt(p),{...K,ids:{n:0},...!rt&&{rels:l}}),lt=/<p:sldLayout\b[^>]*\bshowMasterSp="(0|false)"/.test(w)?{svg:"",used:new Set}:await G(K.map),yt=await it(At(w),K),ct=ie(w,p,K),at=W.rgb?X[nt(W.rgb)]:void 0,Bt=ct&&et(ct,h)>et(ct,x),xt=at==="fill"?"fill":Bt&&(lt.svg||yt||!at)?"ink":at??(W.rgb&&et(W.rgb,h)<et(W.rgb,x)?"ink":"paper"),ft=[...q(xt===at?"":W.svg,N||D),...q(lt.svg,N||D),...q(yt,N||D)],pt=ce(B,g,k,ft.length>0);if(!pt){a.push(`layout ${N||D}: its placeholders make no grid deck lays out`);continue}let zt=j&&(K.used.has(j)||lt.used.has(j))?"none":mt.layouts[D]?.logo??"small",Ut={ctr:"center",r:"end"}[Et(w,p,/<a:(?:lvl1pPr|pPr)\b[^>]*\balgn="(\w+)"/)??""]??"start";U[D]={label:N||D,...pt,paper:xt,title:B.some(v=>v.type==="ctrTitle")?"huge":"normal",logo:zt,align:Ut,...B.some(v=>v.type==="ctrTitle")&&{justify:"center"},pptx:qt.includes(N)?N:pt.slots.length>1?"Comparison":"Title and Content",numbered:/<p:ph\b[^>]*type="sldNum"/.test(w),...ft.length&&{art:ft}}}Object.values(U).some(d=>d.art)&&(C.dark=Object.fromEntries(["paper","ink","muted","soft"].filter(d=>C[d]).map(d=>[d,C[d]])));let L=Mt({name:e??"template",tokens:C,layouts:U,pictures:R});return{kit:{...L.kit,name:e??"template"},problems:[...a,...I.noted,...L.problems]}}function z(t=""){let e=[],r=0,a="",n=0,o=0;for(let s of t.matchAll(/<(\/?)([\w:]+)[^>]*?(\/?)>/g)){let p=s.index;s[1]?--r===0&&e.push({name:s[2],tag:a,inner:t.slice(n,p),xml:t.slice(o,p+s[0].length)}):s[3]?r||e.push({name:s[2],tag:s[0],inner:"",xml:s[0]}):r++||(a=s[0],o=p,n=p+s[0].length)}return e}var $=(t,e)=>z(t).find(r=>r.name===e),At=t=>/<p:spTree>([\s\S]*)<\/p:spTree>/.exec(t)?.[1]??"",Nt=t=>/<p:bg>([\s\S]*?)<\/p:bg>/.exec(t)?.[1],i=t=>String(Math.round(t*100)/100),nt=t=>`#${t.map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0")).join("")}`,Tt=t=>(t/=255)<=.04045?t/12.92:((t+.055)/1.055)**2.4,ht=t=>255*(t<=.0031308?t*12.92:1.055*Math.max(0,t)**(1/2.4)-.055);function Qt([t,e,r]){let[a,n,o]=[t/255,e/255,r/255],s=Math.max(a,n,o),p=Math.min(a,n,o),l=(s+p)/2,c=s-p;if(!c)return[0,0,l];let f=c/(1-Math.abs(2*l-1));return[((s===a?(n-o)/c%6:s===n?(o-a)/c+2:(a-n)/c+4)*60+360)%360,f,l]}function Z(t,e,r){let a=(1-Math.abs(2*Math.min(1,Math.max(0,r))-1))*Math.min(1,e),n=a*(1-Math.abs(t/60%2-1)),o=Math.min(1,Math.max(0,r))-a/2,[s,p,l]=t<60?[a,n,0]:t<120?[n,a,0]:t<180?[0,a,n]:t<240?[0,n,a]:t<300?[n,0,a]:[a,0,n];return[s+o,p+o,l+o].map(c=>c*255)}var Xt={black:"000000",white:"ffffff",gray:"808080",grey:"808080",red:"ff0000",green:"008000",blue:"0000ff",yellow:"ffff00"};function H(t,e,r=null){let a=z(t).find(l=>/^a:(srgbClr|schemeClr|sysClr|prstClr|scrgbClr|hslClr)$/.test(l.name));if(!a)return null;let n=m(a.tag,"val")??"",o=l=>Number(m(a.tag,l)??0)/1e5,s=a.name==="a:srgbClr"?tt(n):a.name==="a:sysClr"?tt(m(a.tag,"lastClr")??(n==="window"?"ffffff":"000000")):a.name==="a:schemeClr"?n==="phClr"?r?.rgb??null:e.scheme[e.map[n]??n]??null:a.name==="a:prstClr"?tt(Xt[n]??"808080"):a.name==="a:scrgbClr"?["r","g","b"].map(l=>ht(o(l))):Z(Number(m(a.tag,"hue")??0)/6e4,o("sat"),o("lum"));if(!s)return null;let p=n==="phClr"?r?.alpha??1:1;for(let l of z(a.inner)){let c=Number(m(l.tag,"val")??1e5)/1e5,[f,g,k]=Qt(s);l.name==="a:alpha"?p=c:l.name==="a:alphaMod"?p*=c:l.name==="a:lumMod"?s=Z(f,g,k*c):l.name==="a:lumOff"?s=Z(f,g,k+c):l.name==="a:satMod"?s=Z(f,g*c,k):l.name==="a:hueMod"?s=Z(f*c%360,g,k):l.name==="a:hueOff"?s=Z((f+c*1e5/6e4+360)%360,g,k):l.name==="a:shade"?s=s.map(b=>ht(Tt(b)*c)):l.name==="a:tint"&&(s=s.map(b=>ht(1-(1-Tt(b))*c)))}return{rgb:s,alpha:p}}async function bt(t,e){let r=t?e.rels.get(t):void 0,a=r&&e.files.get(r);if(!r||!a)return null;let n=Kt[/\.(\w+)$/.exec(r)?.[1].toLowerCase()??""],o=r.split("/").pop();if(!n)return e.noted.add(`the picture ${o} is in a format browsers don't draw`),null;e.pictures.has(r)||e.pictures.set(r,a().then(p=>p.length>Ot*1024*1024?(e.noted.add(`the picture ${o} is larger than ${Ot} MB`),null):`data:${n};base64,${It(p)}`));let s=await e.pictures.get(r);return s&&e.used.add(r),s??null}function Rt(t,e,r=null){let a=$(t,"a:duotone"),n=$(t,"a:lum");if(!a&&!n)return"";let o=`a${++e.ids.n}`,[s,p]=z(a?.inner).map(b=>H(b.xml,e,r)?.rgb??[0,0,0]),l=b=>(y=>`${i(y*.2126)} ${i(y*.7152)} ${i(y*.0722)} 0 ${i(s[b]/255)}`)((p[b]-s[b])/255),[c,f]=["bright","contrast"].map(b=>Number(m(n?.tag??"",b)??0)/1e5),g=f<0?1+f:1/Math.max(.01,1-f),k=["R","G","B"].map(b=>`<feFunc${b} type="linear" slope="${i(g)}" intercept="${i(c+.5*(1-g))}"/>`).join("");return e.defs.push(`<filter id="${o}" color-interpolation-filters="sRGB">${n?`<feComponentTransfer>${k}</feComponentTransfer>`:""}${a&&p?`<feColorMatrix type="matrix" values="${l(0)} ${l(1)} ${l(2)} 0 0 0 1 0"/>`:""}</filter>`),` filter="url(#${o})"`}async function Q(t,e,r,a=null){for(let n of z(t)){if(n.name==="a:noFill")return`${e}="none"`;if(n.name==="a:solidFill"||n.name==="a:pattFill"){let o=H(n.name==="a:pattFill"?$(n.inner,"a:fgClr")?.inner??"":n.inner,r,a);return o?`${e}="${nt(o.rgb)}"${o.alpha<1?` ${e}-opacity="${i(o.alpha)}"`:""}`:`${e}="none"`}if(n.name==="a:gradFill"){let o=z($(n.inner,"a:gsLst")?.inner).map(c=>[Number(m(c.tag,"pos")??0)/1e5,H(c.inner,r,a)]).sort((c,f)=>c[0]-f[0]),s=`a${++r.ids.n}`,p=$(n.inner,"a:path"),l=o.map(([c,f])=>f?`<stop offset="${i(c)}" stop-color="${nt(f.rgb)}"${f.alpha<1?` stop-opacity="${i(f.alpha)}"`:""}/>`:"").join("");if(!l)return`${e}="none"`;if(p){let c=$(p.inner,"a:fillToRect")?.tag??"",[f,g,k,b]=["l","t","r","b"].map(S=>Number(m(c,S)??0)/1e5),y=(f+1-k)/2,u=(g+1-b)/2;r.defs.push(`<radialGradient id="${s}" cx="${i(y)}" cy="${i(u)}" r="${i(Math.hypot(Math.max(y,1-y),Math.max(u,1-u)))}">${l}</radialGradient>`)}else{let c=Number(m($(n.inner,"a:lin")?.tag??"","ang")??0)/6e4*(Math.PI/180),f=Math.cos(c)/2,g=Math.sin(c)/2;r.defs.push(`<linearGradient id="${s}" x1="${i(.5-f)}" y1="${i(.5-g)}" x2="${i(.5+f)}" y2="${i(.5+g)}">${l}</linearGradient>`)}return`${e}="url(#${s})"`}if(n.name==="a:blipFill"){let o=$(n.inner,"a:blip"),s=await bt(m(o?.tag??"","r:embed"),r),p=`a${++r.ids.n}`;if(!s||e!=="fill")return`${e}="none"`;let l=m($(o?.inner,"a:alphaModFix")?.tag??"","amt");return r.defs.push(`<pattern id="${p}" width="1" height="1" patternContentUnits="objectBoundingBox"><image width="1" height="1" preserveAspectRatio="none"${Rt(o?.inner??"",r,a)}${l?` opacity="${i(Number(l)/1e5)}"`:""} xlink:href="${s}"/></pattern>`),`fill="url(#${p})"`}if(n.name==="a:grpFill")return r.group??`${e}="none"`}}var _=(...t)=>`M${t.map(([e,r])=>`${i(e)} ${i(r)}`).join("L")}Z`,st=(t,e,[r,a,n,o])=>`M${i(r)} 0H${i(t-a)}${a?`A${i(a)} ${i(a)} 0 0 1 ${i(t)} ${i(a)}`:""}V${i(e-n)}${n?`A${i(n)} ${i(n)} 0 0 1 ${i(t-n)} ${i(e)}`:""}H${i(o)}${o?`A${i(o)} ${i(o)} 0 0 1 0 ${i(e-o)}`:""}V${i(r)}${r?`A${i(r)} ${i(r)} 0 0 1 ${i(r)} 0`:""}Z`,J={rect:(t,e)=>_([0,0],[t,0],[t,e],[0,e]),roundRect:(t,e,r,a)=>st(t,e,Array(4).fill(a*r("adj",16667))),round1Rect:(t,e,r,a)=>st(t,e,[0,a*r("adj",16667),0,0]),round2SameRect:(t,e,r,a)=>st(t,e,[a*r("adj1",16667),a*r("adj1",16667),a*r("adj2",0),a*r("adj2",0)]),round2DiagRect:(t,e,r,a)=>st(t,e,[a*r("adj1",16667),a*r("adj2",0),a*r("adj1",16667),a*r("adj2",0)]),snip1Rect:(t,e,r,a)=>(n=>_([0,0],[t-n,0],[t,n],[t,e],[0,e]))(a*r("adj",16667)),snip2SameRect:(t,e,r,a)=>(n=>_([n,0],[t-n,0],[t,n],[t,e],[0,e],[0,n]))(a*r("adj1",16667)),ellipse:(t,e)=>`M0 ${i(e/2)}A${i(t/2)} ${i(e/2)} 0 1 1 ${i(t)} ${i(e/2)}A${i(t/2)} ${i(e/2)} 0 1 1 0 ${i(e/2)}Z`,triangle:(t,e,r)=>_([t*r("adj",5e4),0],[t,e],[0,e]),rtTriangle:(t,e)=>_([0,0],[t,e],[0,e]),diamond:(t,e)=>_([t/2,0],[t,e/2],[t/2,e],[0,e/2]),parallelogram:(t,e,r,a)=>(n=>_([n,0],[t,0],[t-n,e],[0,e]))(a*r("adj",25e3)),trapezoid:(t,e,r,a)=>(n=>_([n,0],[t-n,0],[t,e],[0,e]))(a*r("adj",25e3)),homePlate:(t,e,r,a)=>(n=>_([0,0],[n,0],[t,e/2],[n,e],[0,e]))(t-a*r("adj",5e4)),chevron:(t,e,r,a)=>(n=>_([0,0],[t-n,0],[t,e/2],[t-n,e],[0,e],[n,e/2]))(a*r("adj",5e4)),pentagon:(t,e)=>_([t/2,0],[t,e*.382],[t*.809,e],[t*.191,e],[0,e*.382]),hexagon:(t,e,r,a)=>(n=>_([n,0],[t-n,0],[t,e/2],[t-n,e],[n,e],[0,e/2]))(a*r("adj",25e3)),octagon:(t,e,r,a)=>(n=>_([n,0],[t-n,0],[t,n],[t,e-n],[t-n,e],[n,e],[0,e-n],[0,n]))(a*r("adj",29289)),star5:(t,e)=>_(...Array.from({length:10},(r,a)=>((n,o)=>[t/2+t/2*n*Math.cos(o),e/2+e/2*n*Math.sin(o)])(a%2?.382:1,-Math.PI/2+a*Math.PI/5))),line:(t,e)=>`M0 0L${i(t)} ${i(e)}`,bentConnector2:(t,e)=>`M0 0H${i(t)}V${i(e)}`,bentConnector3:(t,e,r)=>`M0 0H${i(t*r("adj1",5e4))}V${i(e)}H${i(t)}`,curvedConnector3:(t,e,r)=>(a=>`M0 0C${i(a)} 0 ${i(a)} ${i(e)} ${i(t)} ${i(e)}`)(t*r("adj1",5e4))};Object.assign(J,{straightConnector1:J.line,flowChartProcess:J.rect,flowChartAlternateProcess:J.roundRect,flowChartDecision:J.diamond,flowChartConnector:J.ellipse});var Yt=new Set(["line","straightConnector1","bentConnector2","bentConnector3","curvedConnector3"]),te={dash:[4,3],sysDash:[3,1],dot:[1,3],sysDot:[1,1],lgDash:[8,3],dashDot:[4,3,1,3],lgDashDot:[8,3,1,3],lgDashDotDot:[8,3,1,3,1,3],sysDashDot:[3,1,1,1],sysDashDotDot:[3,1,1,1,1,1]};function Ft(t,e,r){let a=$(t,"a:custGeom");if(a)return z($(a.inner,"a:pathLst")?.inner).filter(l=>l.name==="a:path").flatMap(l=>{let c=Number(m(l.tag,"w")??0),f=Number(m(l.tag,"h")??0),g=c?e/c:1/V,k=f?r/f:1/V,b="",y=[0,0];for(let u of z(l.inner)){let S=z(u.inner).filter(M=>M.name==="a:pt").map(M=>[Number(m(M.tag,"x"))*g,Number(m(M.tag,"y"))*k]),O=S.map(([M,C])=>`${i(M)} ${i(C)}`).join(" ");if(u.name==="a:moveTo")b+=`M${O}`;else if(u.name==="a:lnTo")b+=`L${O}`;else if(u.name==="a:cubicBezTo")b+=`C${O}`;else if(u.name==="a:quadBezTo")b+=`Q${O}`;else if(u.name==="a:close")b+="Z";else if(u.name==="a:arcTo"){let[M,C]=[Number(m(u.tag,"wR")??0)*g,Number(m(u.tag,"hR")??0)*k],[F,j]=["stAng","swAng"].map(I=>Number(m(u.tag,I)??0)/6e4*(Math.PI/180)),A=[y[0]-M*Math.cos(F)+M*Math.cos(F+j),y[1]-C*Math.sin(F)+C*Math.sin(F+j)];b+=`A${i(M)} ${i(C)} 0 ${Math.abs(j)>Math.PI?1:0} ${j>0?1:0} ${i(A[0])} ${i(A[1])}`,y=A}S.length&&(y=S[S.length-1])}return b&&!b.includes("NaN")?[{d:b,fill:m(l.tag,"fill")!=="none",stroke:!/^(0|false)$/.test(m(l.tag,"stroke")??"")}]:[]});let n=$(t,"a:prstGeom");if(!n)return null;let o=m(n.tag,"prst")??"",s=Object.fromEntries(z($(n.inner,"a:avLst")?.inner).map(l=>[m(l.tag,"name"),Number(/^val\s+(-?\d+)$/.exec(m(l.tag,"fmla")??"")?.[1])])),p=J[o]?.(e,r,(l,c)=>(Number.isFinite(s[l])?s[l]:c)/1e5,Math.min(e,r));return p?[{d:p,fill:!Yt.has(o),stroke:!0}]:void 0}function $t(t){let e=$(t?.inner,"a:off"),r=$(t?.inner,"a:ext");if(!t||!e||!r)return null;let[a,n,o,s]=[m(e.tag,"x"),m(e.tag,"y"),m(r.tag,"cx"),m(r.tag,"cy")].map(f=>Number(f??0)/V),p=Number(m(t.tag,"rot")??0)/6e4,[l,c]=["flipH","flipV"].map(f=>/^(1|true)$/.test(m(t.tag,f)??""));return{x:a,y:n,w:o,h:s,move:`translate(${i(a)} ${i(n)})${p?` rotate(${i(p)} ${i(o/2)} ${i(s/2)})`:""}`,flip:l||c?` matrix(${l?-1:1} 0 0 ${c?-1:1} ${l?i(o):0} ${c?i(s):0})`:""}}async function ee(t,e,r){let a=await Q(t,"fill",r),n=$(e,"a:fillRef"),o=Number(m(n?.tag??"","idx")??0),s=o>1e3?r.styles.bg[o-1001]:o?r.styles.fill[o-1]:void 0;return a??(s&&n&&await Q(s,"fill",{...r,rels:r.themeRels},H(n.inner,r)))??'fill="none"'}async function Dt(t,e,r){let a=$(t,"a:ln"),n=$(e,"a:lnRef"),o=Number(m(n?.tag??"","idx")??0),s=o?z(r.styles.line[o-1]??"")[0]:void 0,p=(a&&await Q(a.inner,"stroke",r))??(s&&n&&await Q(s.inner,"stroke",r,H(n.inner,r)));if(!p||p==='stroke="none"')return"";let l=Number(m(a?.tag??"","w")??m(s?.tag??"","w")??9525)/V,c=te[m($(a?.inner,"a:prstDash")?.tag??$(s?.inner,"a:prstDash")?.tag??"","val")??""];return` ${p} stroke-width="${i(l)}"${c?` stroke-dasharray="${c.map(f=>i(f*l)).join(" ")}"`:""}`}function ne(t,e,r,a,n){let o=$(t,"a:bodyPr"),s=(j,A)=>Number(m(o?.tag??"",j)??A)/V,[p,l,c,f]=[s("lIns",91440),s("tIns",45720),s("rIns",91440),s("bIns",45720)],g=m(o?.tag??"","wrap")!=="none",k=Number(m($(o?.inner,"a:normAutofit")?.tag??"","fontScale")??1e5)/1e5,b=$($(t,"a:lstStyle")?.inner,"a:lvl1pPr"),y=$(b?.inner,"a:defRPr"),u=$(a,"a:fontRef"),S=(u&&H(u.inner,n))??{rgb:n.scheme[n.map.tx1??"dk1"]??[0,0,0],alpha:1},O=[];for(let j of z(t).filter(A=>A.name==="a:p")){let A=z(j.inner).filter(R=>R.name==="a:r"||R.name==="a:br"),I=$(A.find(R=>R.name==="a:r")?.inner,"a:rPr")??$(j.inner,"a:endParaRPr"),E=R=>m(I?.tag??"",R)??m(y?.tag??"",R),G=Number(E("sz")??1800)/100*k,X=m($(j.inner,"a:pPr")?.tag??"","algn")??m(b?.tag??"","algn")??"l",h=H($(I?.inner,"a:solidFill")?.inner??"",n)??H($(y?.inner,"a:solidFill")?.inner??"",n)??S,x=m($(I?.inner,"a:latin")?.tag??"","typeface")??"+mn-lt",P=x.startsWith("+mj")?n.faces.major:x.startsWith("+")?n.faces.minor:x,T=A.map(R=>R.name==="a:br"?`
2
- `:/<a:t(?:\s[^>]*)?>([\s\S]*?)<\/a:t>/.exec(R.inner)?.[1]??"").join("").replace(/(&[^;\s]+;)|[^&]+/g,(R,q)=>q??(E("cap")==="all"?R.toLocaleUpperCase():R)),U=Math.max(1,Math.floor((e-p-c)/(G*(E("b")==="1"?.6:.55))));for(let R of T.split(`
3
- `)){let q=L=>L.replace(/&[^;\s]+;/g,"_").length<=U,Y=g?R.split(" ").reduce((L,d)=>L.length&&q(`${L[L.length-1]} ${d}`)?[...L.slice(0,-1),`${L[L.length-1]} ${d}`]:[...L,d],[]):[R];for(let L of Y.length?Y:[""])O.push({words:L,size:G,align:X,colour:h,face:P,bold:E("b")==="1",italic:E("i")==="1"})}}let M=O.reduce((j,A)=>j+A.size*1.2,0),C=m(o?.tag??"","anchor")??"t",F=C==="ctr"?l+(r-l-f-M)/2:C==="b"?r-f-M:l;return O.map(j=>{let A=F+j.size*.95,[I,E]=j.align==="ctr"?[p+(e-p-c)/2,"middle"]:j.align==="r"?[e-c,"end"]:[p,"start"];return F+=j.size*1.2,j.words.trim()?`<text x="${i(I)}" y="${i(A)}" font-size="${i(j.size)}" font-family="${[j.face.replace(/["'&<>]/g,""),"ui-sans-serif","system-ui","sans-serif"].filter(Boolean).map(G=>/\s/.test(G)?`'${G}'`:G).join(", ")}" fill="${nt(j.colour.rgb)}"${j.colour.alpha<1?` fill-opacity="${i(j.colour.alpha)}"`:""}${E==="start"?"":` text-anchor="${E}"`}${j.bold?' font-weight="bold"':""}${j.italic?' font-style="italic"':""} xml:space="preserve">${j.words}</text>`:""}).join("")}async function re(t,e){if(/<p:ph\b/.test(($(t,"p:nvSpPr")??$(t,"p:nvCxnSpPr"))?.inner??""))return"";let r=$(t,"p:spPr")?.inner??"",a=$(t,"p:style")?.inner??"",n=$t($(r,"a:xfrm")),o={...e,defs:[]};if(!n)return"";let s=Ft(r,n.w,n.h);s===void 0&&o.noted.add(`the shape ${m($(r,"a:prstGeom")?.tag??"","prst")} is left out`);let p=s?.some(g=>g.fill)?await ee(r,a,o):'fill="none"',l=s?.some(g=>g.stroke)?await Dt(r,a,o):"",c=(s??[]).filter(g=>g.fill&&p!=='fill="none"'||g.stroke&&l).map(g=>`<path d="${g.d}" ${g.fill?p:'fill="none"'}${g.stroke?l:""}/>`).join(""),f=ne($(t,"p:txBody")?.inner??"",n.w,n.h,a,o);return`${o.defs.join("")}${c?`<g transform="${n.move}${n.flip}">${c}</g>`:""}${f?`<g transform="${n.move}">${f}</g>`:""}`}async function ae(t,e){if(/<p:ph\b/.test($(t,"p:nvPicPr")?.inner??""))return"";let r=$(t,"p:blipFill")?.inner??"",a=$(r,"a:blip"),n=$(t,"p:spPr")?.inner??"",o=$t($(n,"a:xfrm")),s=/<asvg:svgBlip\b[^>]*\br:embed="([^"]+)"/.exec(a?.inner??"")?.[1],p=s&&await bt(s,e)||await bt(m(a?.tag??"","r:embed"),e);if(!o||!p)return"";let l=$(r,"a:srcRect")?.tag??"",[c,f,g,k]=["l","t","r","b"].map(j=>Number(m(l,j)??0)/1e5),b=o.w/(1-c-g||1),y=o.h/(1-f-k||1),u=m($(a?.inner,"a:alphaModFix")?.tag??"","amt"),S=Ft(n,o.w,o.h)?.[0],O=S&&!/\bprst="rect"/.test(n)?`a${++e.ids.n}`:"",M={...e,defs:[]},C=S?await Dt(n,$(t,"p:style")?.inner??"",M):"",F=Rt(a?.inner??"",M);return`${M.defs.join("")}<g transform="${o.move}${o.flip}"${u?` opacity="${i(Number(u)/1e5)}"`:""}>${O?`<clipPath id="${O}"><path d="${S?.d}"/></clipPath><g clip-path="url(#${O})">`:"<g>"}<svg width="${i(o.w)}" height="${i(o.h)}"><image x="${i(-c*b)}" y="${i(-f*y)}" width="${i(b)}" height="${i(y)}" preserveAspectRatio="none"${F} xlink:href="${p}"/></svg></g>${C?`<path d="${S?.d}" fill="none"${C}/>`:""}</g>`}async function oe(t,e){let r=$(t,"p:grpSpPr")?.inner??"",a=$(r,"a:xfrm"),n=$t(a),o={...e,defs:[]},[s,p,l,c]=[m($(a?.inner,"a:chOff")?.tag??"","x"),m($(a?.inner,"a:chOff")?.tag??"","y"),m($(a?.inner,"a:chExt")?.tag??"","cx"),m($(a?.inner,"a:chExt")?.tag??"","cy")].map(g=>Number(g??0)/V),f=await it(t,{...o,group:await Q(r,"fill",o)});return f?`${o.defs.join("")}<g${n?` transform="${n.move}${n.flip} scale(${i(l?n.w/l:1)} ${i(c?n.h/c:1)}) translate(${i(-s)} ${i(-p)})"`:""}>${f}</g>`:""}async function it(t,e){let r="";for(let a of z(t))a.name==="mc:AlternateContent"?r+=await it(($(a.inner,"mc:Fallback")??$(a.inner,"mc:Choice"))?.inner??"",e):a.name==="p:sp"||a.name==="p:cxnSp"?r+=await re(a.inner,e):a.name==="p:pic"?r+=await ae(a.inner,e):a.name==="p:grpSp"&&(r+=await oe(a.inner,e));return r}async function se(t,e){let r=$(t,"p:bgPr"),a=$(t,"p:bgRef"),n=Number(m(a?.tag??"","idx")??0),o={...e,defs:[]},s=r?.inner??(n>1e3?e.styles.bg[n-1001]:n?e.styles.fill[n-1]:void 0)??(a?'<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>':""),p=a?H(a.inner,e):null,l=$(s,"a:solidFill"),c=l?H(l.inner,e,p)?.rgb??null:t?null:e.scheme.lt1??[255,255,255],f=await Q(s,"fill",r?o:{...o,rels:e.themeRels},p)??(c?`fill="${nt(c)}"`:void 0);return{rgb:c,svg:f&&f!=='fill="none"'?`${o.defs.join("")}<rect width="${i(e.size[0])}" height="${i(e.size[1])}" ${f}/>`:""}}function Et(t,e,r){let a=n=>r.exec(/<p:txBody>[\s\S]*?<\/p:txBody>/.exec([...n.matchAll(/<p:sp>[\s\S]*?<\/p:sp>/g)].find(([o])=>/<p:ph\b[^>]*type="(title|ctrTitle)"/.test(o))?.[0]??"")?.[0]??"")?.[1];return a(t)??a(e)??r.exec(/<p:titleStyle>[\s\S]*?<\/p:titleStyle>/.exec(e)?.[0]??"")?.[1]}function ie(t,e,r){let a=Et(t,e,/<a:solidFill>([\s\S]*?)<\/a:solidFill>/);return(a&&H(a,r)?.rgb)??r.scheme[r.map.tx1??"dk1"]??null}var le=(t,[e,r])=>`data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${i(e)}" height="${i(r)}" viewBox="0 0 ${i(e)} ${i(r)}" preserveAspectRatio="none">${t}</svg>`).replace(/%2F/g,"/").replace(/%2B/g,"+").replace(/%3D/g,"=")}`;function ce(t,e,r,a=!1){let n=h=>["title","ctrTitle","subTitle"].includes(h.type),o=h=>h.box,s=(h,x)=>Math.abs(h[0]-x[0])<e*.05&&Math.abs(h[2]-x[2])<e*.05&&h[1]>x[1],p=t.filter(n),l=h=>/^body-([a-z][a-z0-9-]{0,31})$/.exec(h.name)?.[1],c=t.filter(h=>!n(h)).sort((h,x)=>o(h)[0]-o(x)[0]||o(h)[1]-o(x)[1]),f=p.length?c.length===1&&!l(c[0])&&o(c[0])[1]>=o(p[0])[1]?c[0]:c.find(h=>l(h)==="default"||!l(h)&&s(o(h),o(p[0]))):void 0,g=f?[...p,f]:p,k=c.filter(h=>h!==f),b=h=>h.length?((x,P,T,U)=>[x,P,T-x,U-P])(Math.min(...h.map(x=>x[0])),Math.min(...h.map(x=>x[1])),Math.max(...h.map(x=>x[0]+x[2])),Math.max(...h.map(x=>x[1]+x[3]))):null,y=g.length?k:k.slice(1),u=g.length?b(g.map(o)):k.length?o(k[0]):[0,0,e,r],S=y.every((h,x)=>!x||o(h)[0]>=(o(y[x-1])[0]+o(y[x-1])[2])*.98),O=S&&y.length===2&&g.length?["left","right"]:S&&y.length===3&&g.length?["left","middle","right"]:S&&y.length===1?["right"]:S&&y.length===2?["middle","right"]:y.map((h,x)=>`s${x+1}`),M=[["default",u],...y.map((h,x)=>[l(h)??O[x],o(h)])],C=(h,x,P)=>[...new Set([...a?[0,P]:[],...M.flatMap(([,T])=>[T[h],T[h]+T[x]])])].sort((T,U)=>T-U).reduce((T,U)=>T.length&&U-T[T.length-1]<P*.03?T:[...T,U],[]),F=C(0,2,e),j=C(1,3,r),A=a?.01:.03,I=(h,x,P)=>x>=h[0]-e*A&&x<=h[0]+h[2]+e*A&&P>=h[1]-r*A&&P<=h[1]+h[3]+r*A,E=j.slice(1).map((h,x)=>F.slice(1).map((P,T)=>M.find(([,U])=>I(U,(F[T]+P)/2,(j[x]+h)/2))?.[0]??"."));if(!E.length||!E[0].length||!E.flat().includes("default"))return null;let G=(h,x)=>h.length===2?["1fr"]:h.slice(1).map((P,T)=>`${Math.max(.1,Math.round((P-h[T])/x*100)/10)}fr`),X=G(j,r).map((h,x)=>!a&&M.length>1&&E[x].every(P=>P==="default"||P===".")?"auto":h);return{slots:M.map(([h])=>h),areas:E.map(h=>h.join(" ")).join(" | "),columns:G(F,e).join(" "),rows:X.join(" ")}}function It(t){let e="";for(let r=0;r<t.length;r+=32768)e+=String.fromCharCode(...t.subarray(r,r+32768));return btoa(e)}function ge(t){let e=n=>typeof n=="string"?{$type:"color",$value:n}:void 0,r=n=>Object.fromEntries(Object.entries({bg:n.paper,fg:n.ink,accent:n.primary,muted:n.muted,surface:n.soft}).flatMap(([o,s])=>e(s)?[[o,e(s)]]:[])),a=t.fonts??{};return{color:{light:r(t),...t.dark&&{dark:r(t.dark)},...t.series&&{series:Object.fromEntries(t.series.map((n,o)=>[`s${o+1}`,e(n)]))}},...(a.heading||a.body)&&{font:{...a.heading&&{heading:{$type:"fontFamily",$value:a.heading}},...a.body&&{body:{$type:"fontFamily",$value:a.body}}}}}}export{me as kitFromTemplate,ge as tokensToDtcg};
1
+ var se=/^[a-z][a-z0-9-]{0,31}$/,Le=/^(auto|min-content|max-content|\d{1,2}(\.\d)?fr|\d{1,3}%)$/,Ue=["Title Slide","Title and Content","Section Header","Two Content","Comparison","Title Only","Blank","Content with Caption","Picture with Caption"],ke={align:["start","center","end"],justify:["start","center","end"],paper:["paper","fill","ink","soft"],title:["normal","large","huge"],logo:["small","big","none"],lists:["bullets","mindmap","steps","metrics","timeline","process","agenda","pyramid","bento"],parts:["none","versus","matrix"]},Se=["top-end","top-start","bottom-end","bottom-start"],me=e=>typeof e=="string"&&e.length<=7e5&&/^data:image\/(png|jpeg|gif|webp|svg\+xml);base64,[a-z0-9+/]+=*$/i.test(e)?e:null,ue=e=>typeof e=="string"&&e.length<=3145728&&/^data:image\/(?:(?:png|jpeg|gif|webp|svg\+xml);base64,[a-z0-9+/]+=*|svg\+xml,[\w.!~*'()%/+=-]*)$/i.test(e)?e:null;var de={name:"standard",tokens:{},pictures:{},layouts:Object.fromEntries(Object.entries({default:{label:{en:"Title and content",fr:"Titre et contenu"},pptx:"Title and Content"},cover:{label:{en:"Cover",fr:"Couverture"},justify:"center",paper:"fill",title:"huge",logo:"big",pptx:"Title Slide",numbered:!1},intro:{label:{en:"Introduction",fr:"Introduction"},justify:"center",paper:"fill",title:"large",logo:"big",pptx:"Title Slide",numbered:!1},section:{label:{en:"Section",fr:"Section"},justify:"center",paper:"ink",title:"huge",pptx:"Section Header",numbered:!1},subsection:{label:{en:"Subsection",fr:"Sous-section"},justify:"center",paper:"soft",title:"large",pptx:"Section Header",numbered:!1},summary:{label:{en:"Contents",fr:"Sommaire"},contents:!0,pptx:"Title and Content"},center:{label:{en:"Centred",fr:"Centré"},justify:"center",align:"center",pptx:"Title Only"},statement:{label:{en:"Statement",fr:"Affirmation"},justify:"center",align:"center",title:"large",pptx:"Title Only"},fact:{label:{en:"Big number",fr:"Grand chiffre"},justify:"center",align:"center",title:"huge",pptx:"Title Only"},quote:{label:{en:"Quote",fr:"Citation"},justify:"center",pptx:"Title Only"},end:{label:{en:"Closing",fr:"Clôture"},justify:"center",align:"center",paper:"fill",title:"large",logo:"big",pptx:"Title Slide",numbered:!1},full:{label:{en:"Full",fr:"Plein cadre"},logo:"none",pptx:"Blank",numbered:!1},none:{label:{en:"Blank",fr:"Vide"},logo:"none",pptx:"Blank",numbered:!1},"two-cols":{label:{en:"Two columns",fr:"Deux colonnes"},slots:["default","right"],areas:"default right",columns:"1fr 1fr",pptx:"Two Content"},"two-cols-header":{label:{en:"Comparison",fr:"Comparaison"},slots:["default","left","right","bottom"],areas:"default default | left right | bottom bottom",columns:"1fr 1fr",rows:"auto 1fr auto",pptx:"Comparison"},"three-cols":{label:{en:"Three columns",fr:"Trois colonnes"},slots:["default","left","middle","right"],areas:"default default default | left middle right",columns:"1fr 1fr 1fr",rows:"auto 1fr",pptx:"Comparison"},"image-left":{label:{en:"Picture left",fr:"Image à gauche"},pptx:"Picture with Caption",justify:"center"},"image-right":{label:{en:"Picture right",fr:"Image à droite"},pptx:"Picture with Caption",justify:"center"},image:{label:{en:"Picture",fr:"Image"},logo:"none",pptx:"Blank",numbered:!1},mindmap:{label:{en:"Mind map",fr:"Carte mentale"},lists:"mindmap",pptx:"Title Only"},steps:{label:{en:"Steps",fr:"Étapes"},lists:"steps",pptx:"Title Only"},metrics:{label:{en:"Key figures",fr:"Chiffres clés"},lists:"metrics",pptx:"Title Only"},timeline:{label:{en:"Timeline",fr:"Frise"},lists:"timeline",pptx:"Title Only"},process:{label:{en:"Process",fr:"Processus"},lists:"process",pptx:"Title Only"},agenda:{label:{en:"Agenda",fr:"Programme"},lists:"agenda",pptx:"Title Only"},pyramid:{label:{en:"Pyramid",fr:"Pyramide"},lists:"pyramid",pptx:"Title Only"},bento:{label:{en:"Bento",fr:"Mosaïque"},lists:"bento",pptx:"Title Only"},versus:{label:{en:"Versus",fr:"Face à face"},parts:"versus",pptx:"Title Only"},matrix:{label:{en:"Matrix",fr:"Matrice"},parts:"matrix",pptx:"Title Only"}}).map(([e,t])=>[e,je(t).layout]))};function je(e){let t=[];if(!e||typeof e!="object")return{layout:null,problems:["not a layout"]};let r={},a=Array.isArray(e.slots)||typeof e.slots=="string"?[e.slots].flat().map(String):e.slots&&typeof e.slots=="object"?Object.entries(e.slots).map(([m,j])=>(j&&typeof j=="object"&&(r[m]=_e(j)),m==="title"?"default":m)):["default"],n=[...new Set(a)];if(!n.every(m=>se.test(m)))return{layout:null,problems:["a slot name is not a-z, 0-9 and -"]};n.includes("default")||n.unshift("default");let o=(Array.isArray(e.areas)?e.areas.map(m=>[m].flat().join(" ")):String(e.areas??n.join(" ")).split(/\||\n/)).map(m=>m.trim().replace(/^"|"$/g,"").split(/\s+/)).filter(m=>m.length&&m[0]),p=o[0]?.length??0;if(!o.length||o.some(m=>m.length!==p)||o.flat().some(m=>m!=="."&&!n.includes(m)))return{layout:null,problems:["areas are not a rectangle of its slots"]};for(let m of n){let j=o.flatMap((C,F)=>C.map((S,T)=>[S,T,F])).filter(([C])=>C===m);if(!j.length){m!=="default"&&t.push(`slot ${m} has no area`);continue}let O=j.map(C=>C[1]),M=j.map(C=>C[2]);if(j.length!==(Math.max(...O)-Math.min(...O)+1)*(Math.max(...M)-Math.min(...M)+1))return{layout:null,problems:[`slot ${m} is not a rectangle`]}}let l=(m,j)=>{let O=m===void 0?Array(j).fill("1fr"):(Array.isArray(m)?m:String(m).split(/\s+/)).map(String);return O.length===j&&O.every(M=>Le.test(M))?O:null},c=l(e.columns,p),f=l(e.rows,o.length);if(!c||!f)return{layout:null,problems:["columns or rows are not tracks deck knows (auto, 1fr, 40%…), one per column or row"]};let g=(m,j)=>{let O=String(e[m]??j);return ke[m].includes(O)?O:(t.push(`${m} ${O} is not one of ${ke[m].join(", ")}`),j)},k=typeof e.label=="string"||e.label&&typeof e.label=="object"?e.label:void 0,b=Array.isArray(e.art)&&e.art.length<=8&&e.art.every(m=>typeof m=="string"&&se.test(m))?e.art:void 0;e.art!==void 0&&!b&&t.push("art is not 8 names at most");let $=m=>typeof m=="string"?m.slice(0,300):void 0;return{layout:{label:k,intent:$(e.intent),use_when:$(e.use_when),avoid_when:$(e.avoid_when),slots:n,budgets:r,areas:o,columns:c,rows:f,align:g("align","start"),justify:g("justify","start"),paper:g("paper","paper"),title:g("title","normal"),logo:g("logo","small"),lists:g("lists","bullets"),parts:g("parts","none"),contents:e.contents===!0,pptx:Ue.includes(e.pptx)?e.pptx:n.length>1?"Comparison":"Title and Content",numbered:e.numbered!==!1,art:b},problems:t}}function _e(e){let t={};for(let r of["max_words","max_chars","item_max_words","heading_max_words"])Number.isInteger(e[r])&&e[r]>0&&(t[r]=e[r]);return Array.isArray(e.items)&&e.items.length===2&&e.items.every(Number.isInteger)&&(t.items=e.items),typeof e.required=="boolean"&&(t.required=e.required),typeof e.kind=="string"&&/^[a-z-]{1,20}$/.test(e.kind)&&(t.kind=e.kind),t}function Ge(e){if(!e||typeof e!="object")return{};if(!JSON.stringify(e).includes('"$value"'))return e;let t=k=>k&&typeof k=="object"&&"$value"in k?k.$value:k,r=k=>{let b=t(k);return typeof b=="string"?b:typeof b?.hex=="string"?`${b.hex}${typeof b.alpha=="number"&&b.alpha<1?Math.round(Math.max(0,b.alpha)*255).toString(16).padStart(2,"0"):""}`:void 0},a=k=>{let b=t(k);return Array.isArray(b)?b.map(String):typeof b=="string"?[b]:void 0},n={bg:"paper",background:"paper",paper:"paper",fg:"ink",text:"ink",ink:"ink",accent:"primary",primary:"primary",muted:"muted",surface:"soft",soft:"soft"},s=k=>Object.fromEntries(Object.entries(k??{}).filter(([b])=>b in n).map(([b,$])=>[n[b],r($)]).filter(([,b])=>b)),o=e.color??e.colour??{},p={...s(o),...s(o.light)},l=s(o.dark);Object.keys(l).length&&(p.dark=l);let c=e.font??e.fontFamily??{},f=a(c.heading??c.display??c.sans),g=a(c.body??c.text??c.sans);return(f||g)&&(p.fonts={heading:f??g,body:g??f}),p}function Me(...e){let t={name:"standard",tokens:{},layouts:{...de.layouts},pictures:{}},r=[];for(let a of e)if(!(!a||typeof a!="object")){if(typeof a.name=="string"&&(t.name=a.name),a.tokens&&typeof a.tokens=="object"){let n=Ge(a.tokens),s=n.dark&&typeof n.dark=="object"?{...t.tokens.dark,...n.dark}:t.tokens.dark;t.tokens={...t.tokens,...n,...s&&{dark:s}}}for(let[n,s]of Object.entries(a.pictures??{}))se.test(n)&&ue(s)?t.pictures[n]=s:r.push(`picture ${n}: not a picture inside the kit`);for(let[n,s]of Object.entries(a.layouts??a.types??{})){if(!se.test(n)){r.push(`layout ${n}: not a-z, 0-9 and -`);continue}if(s===!1){n!=="default"&&delete t.layouts[n];continue}let{layout:o,problems:p}=je(s);r.push(...p.map(l=>`layout ${n}: ${l}`)),o&&(t.layouts[n]=o)}}for(let[a,n]of[["logo",t.tokens],["dark logo",t.tokens.dark]])n?.logo!==void 0&&!me(n.logo)&&(r.push(`${a}: not a picture inside the kit (PNG, JPEG, GIF, WebP or SVG as data:, 512 KB at most)`),delete n.logo);return t.tokens.logoAt!==void 0&&!Se.includes(t.tokens.logoAt)&&(r.push(`logoAt ${t.tokens.logoAt} is not one of ${Se.join(", ")}`),delete t.tokens.logoAt),{kit:t,problems:r}}function ee(e,t=[255,255,255]){let r=String(e).trim(),a=/^#?([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.exec(r)?.[1],n=/^rgba?\(([^)]*)\)$/i.exec(r)?.[1].split(/[\s,/]+/).filter(Boolean),s=(f,g)=>f.endsWith("%")?parseFloat(f)/100*g:Number(f),[o,p,l,c=1]=a?(a.length<5?[...a].map(f=>f+f):a.match(/../g)).map((f,g)=>parseInt(f,16)/(g>2?255:1)):n?.length===3||n?.length===4?n.map((f,g)=>s(f,g>2?1:255)):[];return o!==void 0&&[o,p,l].every(f=>f>=0&&f<=255)&&c>=0&&c<=1?He(qe(t,[o,p,l],c)):null}var He=e=>e.map(t=>Math.round(Math.max(0,Math.min(255,t)))),qe=(e,t,r)=>e.map((a,n)=>a+(t[n]-a)*r);function Ce(e){let[t,r,a]=e.map(n=>{let s=n/255;return s<=.03928?s/12.92:((s+.055)/1.055)**2.4});return .2126*t+.7152*r+.0722*a}function te(e,t){let[r,a]=[Ce(e),Ce(t)].sort((n,s)=>s-n);return(r+.05)/(a+.05)}var Ve={"Title Slide":"cover","Title and Content":"default","Section Header":"section","Two Content":"two-cols-header","Title Only":"center",Blank:"none"},We=["Title Slide","Title and Content","Section Header","Two Content","Comparison","Title Only","Blank","Content with Caption","Picture with Caption"],Pe={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml"},Ke={...Pe,webp:"image/webp",bmp:"image/bmp"},Oe=2,Je=3,V=12700;function Ze(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),r=e.length-22;for(;r>=0&&t.getUint32(r,!0)!==101010256;)r--;if(r<0)throw new Error("not a PowerPoint file");let a=new Map;for(let n=t.getUint32(r+16,!0),s=t.getUint16(r+10,!0);s>0;s--){let o=t.getUint16(n+10,!0),p=t.getUint32(n+20,!0),l=new TextDecoder().decode(e.subarray(n+46,n+46+t.getUint16(n+28,!0))),c=t.getUint32(n+42,!0),f=c+30+t.getUint16(c+26,!0)+t.getUint16(c+28,!0),g=e.subarray(f,f+p);a.set(l,async()=>o===0?g:new Uint8Array(await new Response(new Blob([g]).stream().pipeThrough(new DecompressionStream("deflate-raw"))).arrayBuffer())),n+=46+t.getUint16(n+28,!0)+t.getUint16(n+30,!0)+t.getUint16(n+32,!0)}return a}var d=(e,t)=>new RegExp(`\\b${t}="([^"]*)"`).exec(e)?.[1],ge=(e,t)=>new Map([...e.matchAll(/<Relationship\b[^>]*>/g)].map(([r])=>[String(d(r,"Id")),new URL(String(d(r,"Target")),`file:///${t}/`).pathname.slice(1)]));async function dt(e,{name:t}={}){let r=Ze(e),a=[],n=async u=>new TextDecoder().decode(await(r.get(u)?.()??new Uint8Array)),s=[...r.keys()].filter(u=>/^(ppt|theme)\/slideMasters\/slideMaster\d+\.xml$/.test(u)).sort()[0];if(!s)throw new Error("no slide master: not a PowerPoint template");let o=s.split("/")[0],p=await n(s),l=ge(await n(s.replace(/([^/]+)$/,"_rels/$1.rels")),`${o}/slideMasters`),c=[...l.values()].find(u=>/theme\/theme\d+\.xml$/.test(u))??`${o}/theme/theme1.xml`,f=await n(c),[g,k]=(u=>[Number(d(u,"cx")??12192e3),Number(d(u,"cy")??6858e3)])(/<p:sldSz\b[^>]*>/.exec(await n(`${o}/presentation.xml`))?.[0]??""),b=u=>Object.fromEntries([...(/<(?:p:clrMap|a:overrideClrMapping)\b[^>]*>/.exec(u)?.[0]??"").matchAll(/(\w+)="(\w+)"/g)].map(([,w,A])=>[w,A])),$={bg1:"lt1",tx1:"dk1",bg2:"lt2",tx2:"dk2",...b(p)},m=Object.fromEntries([...f.matchAll(/<a:(dk1|lt1|dk2|lt2|accent[1-6]|hlink|folHlink)>\s*<a:(?:srgbClr\b[^>]*\bval|sysClr\b[^>]*\blastClr)="([0-9A-Fa-f]{6})"/g)].map(([,u,w])=>[u,`#${w.toLowerCase()}`])),j=u=>d(new RegExp(`<a:${u}>[\\s\\S]*?<a:latin\\b[^>]*>`).exec(f)?.[0].replace(/^[\s\S]*<a:latin/,"")??"","typeface"),[O,M]=[j("majorFont"),j("minorFont")].map(u=>u&&!u.startsWith("+")?[u,"ui-sans-serif","system-ui","sans-serif"]:null),C=Object.fromEntries([["paper",$.bg1],["ink",$.tx1],["primary","accent1"],["muted",$.tx2],["soft",$.bg2]].filter(([,u])=>m[u]).map(([u,w])=>[u,m[w]])),F=[1,2,3,4,5,6].map(u=>m[`accent${u}`]).filter(Boolean);F.length&&(C.series=F),(O||M)&&(C.fonts={heading:O??M,body:M??O});let S="";for(let[u]of p.matchAll(/<p:pic>[\s\S]*?<\/p:pic>/g)){let w=l.get(String(d(/<a:blip\b[^>]*>/.exec(u)?.[0]??"","r:embed"))),A=Pe[/\.(\w+)$/.exec(w??"")?.[1].toLowerCase()??""];if(!w||!A||!r.has(w))continue;let I=await r.get(w)?.(),D=I&&`data:${A};base64,${Be(I)}`;if(!me(D)){a.push(`the logo ${w.split("/").pop()} is larger than 512 KB`);break}let[K,re]=(q=>[Number(d(q,"x")??0),Number(d(q,"y")??0)])(/<a:off\b[^>]*>/.exec(u)?.[0]??"");Object.assign(C,{logo:D,logoAt:`${re<k/2?"top":"bottom"}-${K<g/2?"start":"end"}`}),S=w;break}let T=u=>z(new RegExp(`<a:${u}>([\\s\\S]*?)</a:${u}>`).exec(f)?.[1]??"").map(w=>w.xml),B={scheme:Object.fromEntries(Object.entries(m).map(([u,w])=>[u,ee(w.slice(1))])),map:$,rels:l,files:r,size:[g/V,k/V],themeRels:ge(await n(c.replace(/([^/]+)$/,"_rels/$1.rels")),c.replace(/\/[^/]+$/,"")),styles:{fill:T("fillStyleLst"),line:T("lnStyleLst"),bg:T("bgFillStyleLst")},faces:{major:j("majorFont")??"",minor:j("minorFont")??""},pictures:new Map,used:new Set,noted:new Set,ids:{n:0},defs:[]},E=new Map,G=u=>E.get(JSON.stringify(u))??E.set(JSON.stringify(u),(w=>ie(Te(p),{...B,map:u,used:w,ids:{n:0}}).then(A=>({svg:A,used:w})))(new Set)).get(JSON.stringify(u)),X=Object.fromEntries([[$.bg2,"soft"],["accent1","fill"],[$.tx1,"ink"],[$.bg1,"paper"]].filter(([u])=>m[u]).map(([u,w])=>[m[u],w])),[h,x]=[B.scheme[$.tx1]??[0,0,0],B.scheme[$.bg1]??[255,255,255]],P=u=>[...u.matchAll(/<p:sp>[\s\S]*?<\/p:sp>/g)].flatMap(([w])=>{let A=/<p:ph\b[^>]*>/.exec(w)?.[0];if(!A)return[];let I=/<a:off\b[^>]*>/.exec(w)?.[0],D=/<a:ext\b[^>]*>/.exec(w)?.[0];return[{type:d(A,"type")??"body",name:d(/<p:cNvPr\b[^>]*>/.exec(w)?.[0]??"","name")??"",box:I&&D?[Number(d(I,"x")),Number(d(I,"y")),Number(d(D,"cx")),Number(d(D,"cy"))]:null}]}),N=P(p),v={},R={},W=(u,w)=>{let A=u?ue(lt(u,B.size)):null;if(u&&!A&&a.push(`layout ${w}: a layer of its art is larger than ${Je} MB`),!A)return[];let I=2166136261;for(let D=0;D<A.length;D++)I=Math.imul(I^A.charCodeAt(D),16777619)>>>0;return R[`art-${I.toString(36)}`]=A,[`art-${I.toString(36)}`]},Y=[...l.values()].filter(u=>/slideLayouts\/slideLayout\d+\.xml$/.test(u)).sort((u,w)=>Number(/(\d+)\.xml$/.exec(u)?.[1])-Number(/(\d+)\.xml$/.exec(w)?.[1]));for(let u of Y){let w=await n(u),A=(d(/<p:cSld\b[^>]*>/.exec(w)?.[0]??"","name")??"").replace(/&amp;/g,"&").trim(),I=P(w).filter(_=>!["dt","ftr","sldNum"].includes(_.type)).map(_=>({..._,box:_.box??N.find(we=>we.type===_.type||_.type==="ctrTitle"&&we.type==="title")?.box??null})).filter(_=>_.box),D=Ve[A]??(A.toLowerCase().normalize("NFKD").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/^(?=\d)/,"l-").slice(0,32)||`layout-${Y.indexOf(u)+1}`),K={...B,map:{...$,...b(w)},rels:ge(await n(u.replace(/([^/]+)$/,"_rels/$1.rels")),u.replace(/\/[^/]+$/,"")),used:new Set,ids:{n:0}},re=Ae(w),q=await ot(re??Ae(p),{...K,ids:{n:0},...!re&&{rels:l}}),le=/<p:sldLayout\b[^>]*\bshowMasterSp="(0|false)"/.test(w)?{svg:"",used:new Set}:await G(K.map),$e=await ie(Te(w),K),ce=it(w,p,K),ae=q.rgb?X[ne(q.rgb)]:void 0,Ie=ce&&te(ce,h)>te(ce,x),xe=ae==="fill"?"fill":Ie&&(le.svg||$e||!ae)?"ink":ae??(q.rgb&&te(q.rgb,h)<te(q.rgb,x)?"ink":"paper"),fe=[...W(xe===ae?"":q.svg,A||D),...W(le.svg,A||D),...W($e,A||D)],pe=ct(I,g,k,fe.length>0);if(!pe){a.push(`layout ${A||D}: its placeholders make no grid deck lays out`);continue}let ze=S&&(K.used.has(S)||le.used.has(S))?"none":de.layouts[D]?.logo??"small",ve={ctr:"center",r:"end"}[Ee(w,p,/<a:(?:lvl1pPr|pPr)\b[^>]*\balgn="(\w+)"/)??""]??"start";v[D]={label:A||D,...pe,paper:xe,title:I.some(_=>_.type==="ctrTitle")?"huge":"normal",logo:ze,align:ve,...I.some(_=>_.type==="ctrTitle")&&{justify:"center"},pptx:We.includes(A)?A:pe.slots.length>1?"Comparison":"Title and Content",numbered:/<p:ph\b[^>]*type="sldNum"/.test(w),...fe.length&&{art:fe}}}Object.values(v).some(u=>u.art)&&(C.dark=Object.fromEntries(["paper","ink","muted","soft"].filter(u=>C[u]).map(u=>[u,C[u]])));let L=Me({name:t??"template",tokens:C,layouts:v,pictures:R});return{kit:{...L.kit,name:t??"template"},problems:[...a,...B.noted,...L.problems]}}function z(e=""){let t=[],r=0,a="",n=0,s=0;for(let o of e.matchAll(/<(\/?)([\w:]+)[^>]*?(\/?)>/g)){let p=o.index;o[1]?--r===0&&t.push({name:o[2],tag:a,inner:e.slice(n,p),xml:e.slice(s,p+o[0].length)}):o[3]?r||t.push({name:o[2],tag:o[0],inner:"",xml:o[0]}):r++||(a=o[0],s=p,n=p+o[0].length)}return t}var y=(e,t)=>z(e).find(r=>r.name===t),Te=e=>/<p:spTree>([\s\S]*)<\/p:spTree>/.exec(e)?.[1]??"",Ae=e=>/<p:bg>([\s\S]*?)<\/p:bg>/.exec(e)?.[1],i=e=>String(Math.round(e*100)/100),ne=e=>`#${e.map(t=>Math.round(Math.max(0,Math.min(255,t))).toString(16).padStart(2,"0")).join("")}`,Ne=e=>(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4,he=e=>255*(e<=.0031308?e*12.92:1.055*Math.max(0,e)**(1/2.4)-.055);function Qe([e,t,r]){let[a,n,s]=[e/255,t/255,r/255],o=Math.max(a,n,s),p=Math.min(a,n,s),l=(o+p)/2,c=o-p;if(!c)return[0,0,l];let f=c/(1-Math.abs(2*l-1));return[((o===a?(n-s)/c%6:o===n?(s-a)/c+2:(a-n)/c+4)*60+360)%360,f,l]}function Z(e,t,r){let a=(1-Math.abs(2*Math.min(1,Math.max(0,r))-1))*Math.min(1,t),n=a*(1-Math.abs(e/60%2-1)),s=Math.min(1,Math.max(0,r))-a/2,[o,p,l]=e<60?[a,n,0]:e<120?[n,a,0]:e<180?[0,a,n]:e<240?[0,n,a]:e<300?[n,0,a]:[a,0,n];return[o+s,p+s,l+s].map(c=>c*255)}var Xe={black:"000000",white:"ffffff",gray:"808080",grey:"808080",red:"ff0000",green:"008000",blue:"0000ff",yellow:"ffff00"};function H(e,t,r=null){let a=z(e).find(l=>/^a:(srgbClr|schemeClr|sysClr|prstClr|scrgbClr|hslClr)$/.test(l.name));if(!a)return null;let n=d(a.tag,"val")??"",s=l=>Number(d(a.tag,l)??0)/1e5,o=a.name==="a:srgbClr"?ee(n):a.name==="a:sysClr"?ee(d(a.tag,"lastClr")??(n==="window"?"ffffff":"000000")):a.name==="a:schemeClr"?n==="phClr"?r?.rgb??null:t.scheme[t.map[n]??n]??null:a.name==="a:prstClr"?ee(Xe[n]??"808080"):a.name==="a:scrgbClr"?["r","g","b"].map(l=>he(s(l))):Z(Number(d(a.tag,"hue")??0)/6e4,s("sat"),s("lum"));if(!o)return null;let p=n==="phClr"?r?.alpha??1:1;for(let l of z(a.inner)){let c=Number(d(l.tag,"val")??1e5)/1e5,[f,g,k]=Qe(o);l.name==="a:alpha"?p=c:l.name==="a:alphaMod"?p*=c:l.name==="a:lumMod"?o=Z(f,g,k*c):l.name==="a:lumOff"?o=Z(f,g,k+c):l.name==="a:satMod"?o=Z(f,g*c,k):l.name==="a:hueMod"?o=Z(f*c%360,g,k):l.name==="a:hueOff"?o=Z((f+c*1e5/6e4+360)%360,g,k):l.name==="a:shade"?o=o.map(b=>he(Ne(b)*c)):l.name==="a:tint"&&(o=o.map(b=>he(1-(1-Ne(b))*c)))}return{rgb:o,alpha:p}}async function be(e,t){let r=e?t.rels.get(e):void 0,a=r&&t.files.get(r);if(!r||!a)return null;let n=Ke[/\.(\w+)$/.exec(r)?.[1].toLowerCase()??""],s=r.split("/").pop();if(!n)return t.noted.add(`the picture ${s} is in a format browsers don't draw`),null;t.pictures.has(r)||t.pictures.set(r,a().then(p=>p.length>Oe*1024*1024?(t.noted.add(`the picture ${s} is larger than ${Oe} MB`),null):`data:${n};base64,${Be(p)}`));let o=await t.pictures.get(r);return o&&t.used.add(r),o??null}function Re(e,t,r=null){let a=y(e,"a:duotone"),n=y(e,"a:lum");if(!a&&!n)return"";let s=`a${++t.ids.n}`,[o,p]=z(a?.inner).map(b=>H(b.xml,t,r)?.rgb??[0,0,0]),l=b=>($=>`${i($*.2126)} ${i($*.7152)} ${i($*.0722)} 0 ${i(o[b]/255)}`)((p[b]-o[b])/255),[c,f]=["bright","contrast"].map(b=>Number(d(n?.tag??"",b)??0)/1e5),g=f<0?1+f:1/Math.max(.01,1-f),k=["R","G","B"].map(b=>`<feFunc${b} type="linear" slope="${i(g)}" intercept="${i(c+.5*(1-g))}"/>`).join("");return t.defs.push(`<filter id="${s}" color-interpolation-filters="sRGB">${n?`<feComponentTransfer>${k}</feComponentTransfer>`:""}${a&&p?`<feColorMatrix type="matrix" values="${l(0)} ${l(1)} ${l(2)} 0 0 0 1 0"/>`:""}</filter>`),` filter="url(#${s})"`}async function Q(e,t,r,a=null){for(let n of z(e)){if(n.name==="a:noFill")return`${t}="none"`;if(n.name==="a:solidFill"||n.name==="a:pattFill"){let s=H(n.name==="a:pattFill"?y(n.inner,"a:fgClr")?.inner??"":n.inner,r,a);return s?`${t}="${ne(s.rgb)}"${s.alpha<1?` ${t}-opacity="${i(s.alpha)}"`:""}`:`${t}="none"`}if(n.name==="a:gradFill"){let s=z(y(n.inner,"a:gsLst")?.inner).map(c=>[Number(d(c.tag,"pos")??0)/1e5,H(c.inner,r,a)]).sort((c,f)=>c[0]-f[0]),o=`a${++r.ids.n}`,p=y(n.inner,"a:path"),l=s.map(([c,f])=>f?`<stop offset="${i(c)}" stop-color="${ne(f.rgb)}"${f.alpha<1?` stop-opacity="${i(f.alpha)}"`:""}/>`:"").join("");if(!l)return`${t}="none"`;if(p){let c=y(p.inner,"a:fillToRect")?.tag??"",[f,g,k,b]=["l","t","r","b"].map(j=>Number(d(c,j)??0)/1e5),$=(f+1-k)/2,m=(g+1-b)/2;r.defs.push(`<radialGradient id="${o}" cx="${i($)}" cy="${i(m)}" r="${i(Math.hypot(Math.max($,1-$),Math.max(m,1-m)))}">${l}</radialGradient>`)}else{let c=Number(d(y(n.inner,"a:lin")?.tag??"","ang")??0)/6e4*(Math.PI/180),f=Math.cos(c)/2,g=Math.sin(c)/2;r.defs.push(`<linearGradient id="${o}" x1="${i(.5-f)}" y1="${i(.5-g)}" x2="${i(.5+f)}" y2="${i(.5+g)}">${l}</linearGradient>`)}return`${t}="url(#${o})"`}if(n.name==="a:blipFill"){let s=y(n.inner,"a:blip"),o=await be(d(s?.tag??"","r:embed"),r),p=`a${++r.ids.n}`;if(!o||t!=="fill")return`${t}="none"`;let l=d(y(s?.inner,"a:alphaModFix")?.tag??"","amt");return r.defs.push(`<pattern id="${p}" width="1" height="1" patternContentUnits="objectBoundingBox"><image width="1" height="1" preserveAspectRatio="none"${Re(s?.inner??"",r,a)}${l?` opacity="${i(Number(l)/1e5)}"`:""} xlink:href="${o}"/></pattern>`),`fill="url(#${p})"`}if(n.name==="a:grpFill")return r.group??`${t}="none"`}}var U=(...e)=>`M${e.map(([t,r])=>`${i(t)} ${i(r)}`).join("L")}Z`,oe=(e,t,[r,a,n,s])=>`M${i(r)} 0H${i(e-a)}${a?`A${i(a)} ${i(a)} 0 0 1 ${i(e)} ${i(a)}`:""}V${i(t-n)}${n?`A${i(n)} ${i(n)} 0 0 1 ${i(e-n)} ${i(t)}`:""}H${i(s)}${s?`A${i(s)} ${i(s)} 0 0 1 0 ${i(t-s)}`:""}V${i(r)}${r?`A${i(r)} ${i(r)} 0 0 1 ${i(r)} 0`:""}Z`,J={rect:(e,t)=>U([0,0],[e,0],[e,t],[0,t]),roundRect:(e,t,r,a)=>oe(e,t,Array(4).fill(a*r("adj",16667))),round1Rect:(e,t,r,a)=>oe(e,t,[0,a*r("adj",16667),0,0]),round2SameRect:(e,t,r,a)=>oe(e,t,[a*r("adj1",16667),a*r("adj1",16667),a*r("adj2",0),a*r("adj2",0)]),round2DiagRect:(e,t,r,a)=>oe(e,t,[a*r("adj1",16667),a*r("adj2",0),a*r("adj1",16667),a*r("adj2",0)]),snip1Rect:(e,t,r,a)=>(n=>U([0,0],[e-n,0],[e,n],[e,t],[0,t]))(a*r("adj",16667)),snip2SameRect:(e,t,r,a)=>(n=>U([n,0],[e-n,0],[e,n],[e,t],[0,t],[0,n]))(a*r("adj1",16667)),ellipse:(e,t)=>`M0 ${i(t/2)}A${i(e/2)} ${i(t/2)} 0 1 1 ${i(e)} ${i(t/2)}A${i(e/2)} ${i(t/2)} 0 1 1 0 ${i(t/2)}Z`,triangle:(e,t,r)=>U([e*r("adj",5e4),0],[e,t],[0,t]),rtTriangle:(e,t)=>U([0,0],[e,t],[0,t]),diamond:(e,t)=>U([e/2,0],[e,t/2],[e/2,t],[0,t/2]),parallelogram:(e,t,r,a)=>(n=>U([n,0],[e,0],[e-n,t],[0,t]))(a*r("adj",25e3)),trapezoid:(e,t,r,a)=>(n=>U([n,0],[e-n,0],[e,t],[0,t]))(a*r("adj",25e3)),homePlate:(e,t,r,a)=>(n=>U([0,0],[n,0],[e,t/2],[n,t],[0,t]))(e-a*r("adj",5e4)),chevron:(e,t,r,a)=>(n=>U([0,0],[e-n,0],[e,t/2],[e-n,t],[0,t],[n,t/2]))(a*r("adj",5e4)),pentagon:(e,t)=>U([e/2,0],[e,t*.382],[e*.809,t],[e*.191,t],[0,t*.382]),hexagon:(e,t,r,a)=>(n=>U([n,0],[e-n,0],[e,t/2],[e-n,t],[n,t],[0,t/2]))(a*r("adj",25e3)),octagon:(e,t,r,a)=>(n=>U([n,0],[e-n,0],[e,n],[e,t-n],[e-n,t],[n,t],[0,t-n],[0,n]))(a*r("adj",29289)),star5:(e,t)=>U(...Array.from({length:10},(r,a)=>((n,s)=>[e/2+e/2*n*Math.cos(s),t/2+t/2*n*Math.sin(s)])(a%2?.382:1,-Math.PI/2+a*Math.PI/5))),line:(e,t)=>`M0 0L${i(e)} ${i(t)}`,bentConnector2:(e,t)=>`M0 0H${i(e)}V${i(t)}`,bentConnector3:(e,t,r)=>`M0 0H${i(e*r("adj1",5e4))}V${i(t)}H${i(e)}`,curvedConnector3:(e,t,r)=>(a=>`M0 0C${i(a)} 0 ${i(a)} ${i(t)} ${i(e)} ${i(t)}`)(e*r("adj1",5e4))};Object.assign(J,{straightConnector1:J.line,flowChartProcess:J.rect,flowChartAlternateProcess:J.roundRect,flowChartDecision:J.diamond,flowChartConnector:J.ellipse});var Ye=new Set(["line","straightConnector1","bentConnector2","bentConnector3","curvedConnector3"]),et={dash:[4,3],sysDash:[3,1],dot:[1,3],sysDot:[1,1],lgDash:[8,3],dashDot:[4,3,1,3],lgDashDot:[8,3,1,3],lgDashDotDot:[8,3,1,3,1,3],sysDashDot:[3,1,1,1],sysDashDotDot:[3,1,1,1,1,1]};function Fe(e,t,r){let a=y(e,"a:custGeom");if(a)return z(y(a.inner,"a:pathLst")?.inner).filter(l=>l.name==="a:path").flatMap(l=>{let c=Number(d(l.tag,"w")??0),f=Number(d(l.tag,"h")??0),g=c?t/c:1/V,k=f?r/f:1/V,b="",$=[0,0];for(let m of z(l.inner)){let j=z(m.inner).filter(M=>M.name==="a:pt").map(M=>[Number(d(M.tag,"x"))*g,Number(d(M.tag,"y"))*k]),O=j.map(([M,C])=>`${i(M)} ${i(C)}`).join(" ");if(m.name==="a:moveTo")b+=`M${O}`;else if(m.name==="a:lnTo")b+=`L${O}`;else if(m.name==="a:cubicBezTo")b+=`C${O}`;else if(m.name==="a:quadBezTo")b+=`Q${O}`;else if(m.name==="a:close")b+="Z";else if(m.name==="a:arcTo"){let[M,C]=[Number(d(m.tag,"wR")??0)*g,Number(d(m.tag,"hR")??0)*k],[F,S]=["stAng","swAng"].map(B=>Number(d(m.tag,B)??0)/6e4*(Math.PI/180)),T=[$[0]-M*Math.cos(F)+M*Math.cos(F+S),$[1]-C*Math.sin(F)+C*Math.sin(F+S)];b+=`A${i(M)} ${i(C)} 0 ${Math.abs(S)>Math.PI?1:0} ${S>0?1:0} ${i(T[0])} ${i(T[1])}`,$=T}j.length&&($=j[j.length-1])}return b&&!b.includes("NaN")?[{d:b,fill:d(l.tag,"fill")!=="none",stroke:!/^(0|false)$/.test(d(l.tag,"stroke")??"")}]:[]});let n=y(e,"a:prstGeom");if(!n)return null;let s=d(n.tag,"prst")??"",o=Object.fromEntries(z(y(n.inner,"a:avLst")?.inner).map(l=>[d(l.tag,"name"),Number(/^val\s+(-?\d+)$/.exec(d(l.tag,"fmla")??"")?.[1])])),p=J[s]?.(t,r,(l,c)=>(Number.isFinite(o[l])?o[l]:c)/1e5,Math.min(t,r));return p?[{d:p,fill:!Ye.has(s),stroke:!0}]:void 0}function ye(e){let t=y(e?.inner,"a:off"),r=y(e?.inner,"a:ext");if(!e||!t||!r)return null;let[a,n,s,o]=[d(t.tag,"x"),d(t.tag,"y"),d(r.tag,"cx"),d(r.tag,"cy")].map(f=>Number(f??0)/V),p=Number(d(e.tag,"rot")??0)/6e4,[l,c]=["flipH","flipV"].map(f=>/^(1|true)$/.test(d(e.tag,f)??""));return{x:a,y:n,w:s,h:o,move:`translate(${i(a)} ${i(n)})${p?` rotate(${i(p)} ${i(s/2)} ${i(o/2)})`:""}`,flip:l||c?` matrix(${l?-1:1} 0 0 ${c?-1:1} ${l?i(s):0} ${c?i(o):0})`:""}}async function tt(e,t,r){let a=await Q(e,"fill",r),n=y(t,"a:fillRef"),s=Number(d(n?.tag??"","idx")??0),o=s>1e3?r.styles.bg[s-1001]:s?r.styles.fill[s-1]:void 0;return a??(o&&n&&await Q(o,"fill",{...r,rels:r.themeRels},H(n.inner,r)))??'fill="none"'}async function De(e,t,r){let a=y(e,"a:ln"),n=y(t,"a:lnRef"),s=Number(d(n?.tag??"","idx")??0),o=s?z(r.styles.line[s-1]??"")[0]:void 0,p=(a&&await Q(a.inner,"stroke",r))??(o&&n&&await Q(o.inner,"stroke",r,H(n.inner,r)));if(!p||p==='stroke="none"')return"";let l=Number(d(a?.tag??"","w")??d(o?.tag??"","w")??9525)/V,c=et[d(y(a?.inner,"a:prstDash")?.tag??y(o?.inner,"a:prstDash")?.tag??"","val")??""];return` ${p} stroke-width="${i(l)}"${c?` stroke-dasharray="${c.map(f=>i(f*l)).join(" ")}"`:""}`}function nt(e,t,r,a,n){let s=y(e,"a:bodyPr"),o=(S,T)=>Number(d(s?.tag??"",S)??T)/V,[p,l,c,f]=[o("lIns",91440),o("tIns",45720),o("rIns",91440),o("bIns",45720)],g=d(s?.tag??"","wrap")!=="none",k=Number(d(y(s?.inner,"a:normAutofit")?.tag??"","fontScale")??1e5)/1e5,b=y(y(e,"a:lstStyle")?.inner,"a:lvl1pPr"),$=y(b?.inner,"a:defRPr"),m=y(a,"a:fontRef"),j=(m&&H(m.inner,n))??{rgb:n.scheme[n.map.tx1??"dk1"]??[0,0,0],alpha:1},O=[];for(let S of z(e).filter(T=>T.name==="a:p")){let T=z(S.inner).filter(R=>R.name==="a:r"||R.name==="a:br"),B=y(T.find(R=>R.name==="a:r")?.inner,"a:rPr")??y(S.inner,"a:endParaRPr"),E=R=>d(B?.tag??"",R)??d($?.tag??"",R),G=Number(E("sz")??1800)/100*k,X=d(y(S.inner,"a:pPr")?.tag??"","algn")??d(b?.tag??"","algn")??"l",h=H(y(B?.inner,"a:solidFill")?.inner??"",n)??H(y($?.inner,"a:solidFill")?.inner??"",n)??j,x=d(y(B?.inner,"a:latin")?.tag??"","typeface")??"+mn-lt",P=x.startsWith("+mj")?n.faces.major:x.startsWith("+")?n.faces.minor:x,N=T.map(R=>R.name==="a:br"?`
2
+ `:/<a:t(?:\s[^>]*)?>([\s\S]*?)<\/a:t>/.exec(R.inner)?.[1]??"").join("").replace(/(&[^;\s]+;)|[^&]+/g,(R,W)=>W??(E("cap")==="all"?R.toLocaleUpperCase():R)),v=Math.max(1,Math.floor((t-p-c)/(G*(E("b")==="1"?.6:.55))));for(let R of N.split(`
3
+ `)){let W=L=>L.replace(/&[^;\s]+;/g,"_").length<=v,Y=g?R.split(" ").reduce((L,u)=>L.length&&W(`${L[L.length-1]} ${u}`)?[...L.slice(0,-1),`${L[L.length-1]} ${u}`]:[...L,u],[]):[R];for(let L of Y.length?Y:[""])O.push({words:L,size:G,align:X,colour:h,face:P,bold:E("b")==="1",italic:E("i")==="1"})}}let M=O.reduce((S,T)=>S+T.size*1.2,0),C=d(s?.tag??"","anchor")??"t",F=C==="ctr"?l+(r-l-f-M)/2:C==="b"?r-f-M:l;return O.map(S=>{let T=F+S.size*.95,[B,E]=S.align==="ctr"?[p+(t-p-c)/2,"middle"]:S.align==="r"?[t-c,"end"]:[p,"start"];return F+=S.size*1.2,S.words.trim()?`<text x="${i(B)}" y="${i(T)}" font-size="${i(S.size)}" font-family="${[S.face.replace(/["'&<>]/g,""),"ui-sans-serif","system-ui","sans-serif"].filter(Boolean).map(G=>/\s/.test(G)?`'${G}'`:G).join(", ")}" fill="${ne(S.colour.rgb)}"${S.colour.alpha<1?` fill-opacity="${i(S.colour.alpha)}"`:""}${E==="start"?"":` text-anchor="${E}"`}${S.bold?' font-weight="bold"':""}${S.italic?' font-style="italic"':""} xml:space="preserve">${S.words}</text>`:""}).join("")}async function rt(e,t){if(/<p:ph\b/.test((y(e,"p:nvSpPr")??y(e,"p:nvCxnSpPr"))?.inner??""))return"";let r=y(e,"p:spPr")?.inner??"",a=y(e,"p:style")?.inner??"",n=ye(y(r,"a:xfrm")),s={...t,defs:[]};if(!n)return"";let o=Fe(r,n.w,n.h);o===void 0&&s.noted.add(`the shape ${d(y(r,"a:prstGeom")?.tag??"","prst")} is left out`);let p=o?.some(g=>g.fill)?await tt(r,a,s):'fill="none"',l=o?.some(g=>g.stroke)?await De(r,a,s):"",c=(o??[]).filter(g=>g.fill&&p!=='fill="none"'||g.stroke&&l).map(g=>`<path d="${g.d}" ${g.fill?p:'fill="none"'}${g.stroke?l:""}/>`).join(""),f=nt(y(e,"p:txBody")?.inner??"",n.w,n.h,a,s);return`${s.defs.join("")}${c?`<g transform="${n.move}${n.flip}">${c}</g>`:""}${f?`<g transform="${n.move}">${f}</g>`:""}`}async function at(e,t){if(/<p:ph\b/.test(y(e,"p:nvPicPr")?.inner??""))return"";let r=y(e,"p:blipFill")?.inner??"",a=y(r,"a:blip"),n=y(e,"p:spPr")?.inner??"",s=ye(y(n,"a:xfrm")),o=/<asvg:svgBlip\b[^>]*\br:embed="([^"]+)"/.exec(a?.inner??"")?.[1],p=o&&await be(o,t)||await be(d(a?.tag??"","r:embed"),t);if(!s||!p)return"";let l=y(r,"a:srcRect")?.tag??"",[c,f,g,k]=["l","t","r","b"].map(S=>Number(d(l,S)??0)/1e5),b=s.w/(1-c-g||1),$=s.h/(1-f-k||1),m=d(y(a?.inner,"a:alphaModFix")?.tag??"","amt"),j=Fe(n,s.w,s.h)?.[0],O=j&&!/\bprst="rect"/.test(n)?`a${++t.ids.n}`:"",M={...t,defs:[]},C=j?await De(n,y(e,"p:style")?.inner??"",M):"",F=Re(a?.inner??"",M);return`${M.defs.join("")}<g transform="${s.move}${s.flip}"${m?` opacity="${i(Number(m)/1e5)}"`:""}>${O?`<clipPath id="${O}"><path d="${j?.d}"/></clipPath><g clip-path="url(#${O})">`:"<g>"}<svg width="${i(s.w)}" height="${i(s.h)}"><image x="${i(-c*b)}" y="${i(-f*$)}" width="${i(b)}" height="${i($)}" preserveAspectRatio="none"${F} xlink:href="${p}"/></svg></g>${C?`<path d="${j?.d}" fill="none"${C}/>`:""}</g>`}async function st(e,t){let r=y(e,"p:grpSpPr")?.inner??"",a=y(r,"a:xfrm"),n=ye(a),s={...t,defs:[]},[o,p,l,c]=[d(y(a?.inner,"a:chOff")?.tag??"","x"),d(y(a?.inner,"a:chOff")?.tag??"","y"),d(y(a?.inner,"a:chExt")?.tag??"","cx"),d(y(a?.inner,"a:chExt")?.tag??"","cy")].map(g=>Number(g??0)/V),f=await ie(e,{...s,group:await Q(r,"fill",s)});return f?`${s.defs.join("")}<g${n?` transform="${n.move}${n.flip} scale(${i(l?n.w/l:1)} ${i(c?n.h/c:1)}) translate(${i(-o)} ${i(-p)})"`:""}>${f}</g>`:""}async function ie(e,t){let r="";for(let a of z(e))a.name==="mc:AlternateContent"?r+=await ie((y(a.inner,"mc:Fallback")??y(a.inner,"mc:Choice"))?.inner??"",t):a.name==="p:sp"||a.name==="p:cxnSp"?r+=await rt(a.inner,t):a.name==="p:pic"?r+=await at(a.inner,t):a.name==="p:grpSp"&&(r+=await st(a.inner,t));return r}async function ot(e,t){let r=y(e,"p:bgPr"),a=y(e,"p:bgRef"),n=Number(d(a?.tag??"","idx")??0),s={...t,defs:[]},o=r?.inner??(n>1e3?t.styles.bg[n-1001]:n?t.styles.fill[n-1]:void 0)??(a?'<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>':""),p=a?H(a.inner,t):null,l=y(o,"a:solidFill"),c=l?H(l.inner,t,p)?.rgb??null:e?null:t.scheme.lt1??[255,255,255],f=await Q(o,"fill",r?s:{...s,rels:t.themeRels},p)??(c?`fill="${ne(c)}"`:void 0);return{rgb:c,svg:f&&f!=='fill="none"'?`${s.defs.join("")}<rect width="${i(t.size[0])}" height="${i(t.size[1])}" ${f}/>`:""}}function Ee(e,t,r){let a=n=>r.exec(/<p:txBody>[\s\S]*?<\/p:txBody>/.exec([...n.matchAll(/<p:sp>[\s\S]*?<\/p:sp>/g)].find(([s])=>/<p:ph\b[^>]*type="(title|ctrTitle)"/.test(s))?.[0]??"")?.[0]??"")?.[1];return a(e)??a(t)??r.exec(/<p:titleStyle>[\s\S]*?<\/p:titleStyle>/.exec(t)?.[0]??"")?.[1]}function it(e,t,r){let a=Ee(e,t,/<a:solidFill>([\s\S]*?)<\/a:solidFill>/);return(a&&H(a,r)?.rgb)??r.scheme[r.map.tx1??"dk1"]??null}var lt=(e,[t,r])=>`data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${i(t)}" height="${i(r)}" viewBox="0 0 ${i(t)} ${i(r)}" preserveAspectRatio="none">${e}</svg>`).replace(/%2F/g,"/").replace(/%2B/g,"+").replace(/%3D/g,"=")}`;function ct(e,t,r,a=!1){let n=h=>["title","ctrTitle","subTitle"].includes(h.type),s=h=>h.box,o=(h,x)=>Math.abs(h[0]-x[0])<t*.05&&Math.abs(h[2]-x[2])<t*.05&&h[1]>x[1],p=e.filter(n),l=h=>/^body-([a-z][a-z0-9-]{0,31})$/.exec(h.name)?.[1],c=e.filter(h=>!n(h)).sort((h,x)=>s(h)[0]-s(x)[0]||s(h)[1]-s(x)[1]),f=p.length?c.length===1&&!l(c[0])&&s(c[0])[1]>=s(p[0])[1]?c[0]:c.find(h=>l(h)==="default"||!l(h)&&o(s(h),s(p[0]))):void 0,g=f?[...p,f]:p,k=c.filter(h=>h!==f),b=h=>h.length?((x,P,N,v)=>[x,P,N-x,v-P])(Math.min(...h.map(x=>x[0])),Math.min(...h.map(x=>x[1])),Math.max(...h.map(x=>x[0]+x[2])),Math.max(...h.map(x=>x[1]+x[3]))):null,$=g.length?k:k.slice(1),m=g.length?b(g.map(s)):k.length?s(k[0]):[0,0,t,r],j=$.every((h,x)=>!x||s(h)[0]>=(s($[x-1])[0]+s($[x-1])[2])*.98),O=j&&$.length===2&&g.length?["left","right"]:j&&$.length===3&&g.length?["left","middle","right"]:j&&$.length===1?["right"]:j&&$.length===2?["middle","right"]:$.map((h,x)=>`s${x+1}`),M=[["default",m],...$.map((h,x)=>[l(h)??O[x],s(h)])],C=(h,x,P)=>[...new Set([...a?[0,P]:[],...M.flatMap(([,N])=>[N[h],N[h]+N[x]])])].sort((N,v)=>N-v).reduce((N,v)=>N.length&&v-N[N.length-1]<P*.03?N:[...N,v],[]),F=C(0,2,t),S=C(1,3,r),T=a?.01:.03,B=(h,x,P)=>x>=h[0]-t*T&&x<=h[0]+h[2]+t*T&&P>=h[1]-r*T&&P<=h[1]+h[3]+r*T,E=S.slice(1).map((h,x)=>F.slice(1).map((P,N)=>M.find(([,v])=>B(v,(F[N]+P)/2,(S[x]+h)/2))?.[0]??"."));if(!E.length||!E[0].length||!E.flat().includes("default"))return null;let G=(h,x)=>h.length===2?["1fr"]:h.slice(1).map((P,N)=>`${Math.max(.1,Math.round((P-h[N])/x*100)/10)}fr`),X=G(S,r).map((h,x)=>!a&&M.length>1&&E[x].every(P=>P==="default"||P===".")?"auto":h);return{slots:M.map(([h])=>h),areas:E.map(h=>h.join(" ")).join(" | "),columns:G(F,t).join(" "),rows:X.join(" ")}}function Be(e){let t="";for(let r=0;r<e.length;r+=32768)t+=String.fromCharCode(...e.subarray(r,r+32768));return btoa(t)}function gt(e){let t=n=>typeof n=="string"?{$type:"color",$value:n}:void 0,r=n=>Object.fromEntries(Object.entries({bg:n.paper,fg:n.ink,accent:n.primary,muted:n.muted,surface:n.soft}).flatMap(([s,o])=>t(o)?[[s,t(o)]]:[])),a=e.fonts??{};return{color:{light:r(e),...e.dark&&{dark:r(e.dark)},...e.series&&{series:Object.fromEntries(e.series.map((n,s)=>[`s${s+1}`,t(n)]))}},...(a.heading||a.body)&&{font:{...a.heading&&{heading:{$type:"fontFamily",$value:a.heading}},...a.body&&{body:{$type:"fontFamily",$value:a.body}}}}}}export{dt as kitFromTemplate,gt as tokensToDtcg};
4
4
  //# sourceMappingURL=template.mjs.map