@codename/deck 0.2.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/README.md +4 -4
- package/dist/deck.bundle.mjs +95 -89
- package/dist/deck.bundle.mjs.map +4 -4
- package/dist/deck.css +118 -0
- package/dist/deck.js +215 -91
- package/dist/deck.js.map +4 -4
- package/dist/deck.mjs +43 -37
- package/dist/deck.mjs.map +4 -4
- package/dist/template.mjs +3 -1
- package/dist/template.mjs.map +4 -4
- package/dist/types/blocks.d.ts +6 -4
- package/dist/types/figures.d.ts +68 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/kit.d.ts +27 -4
- package/dist/types/look.d.ts +6 -2
- package/dist/types/mindmap.d.ts +69 -0
- package/dist/types/pptx.d.ts +3 -1
- package/dist/types/render.d.ts +21 -3
- package/dist/types/template.d.ts +35 -0
- package/dist/types/version.d.ts +1 -1
- package/docs/format.md +85 -4
- package/docs/host.md +4 -4
- package/docs/kits.md +21 -4
- package/package.json +1 -1
- package/src/blocks.js +26 -9
- package/src/deck.css +118 -0
- package/src/deck.js +13 -3
- package/src/figures.js +255 -0
- package/src/index.js +1 -1
- package/src/kit.js +59 -15
- package/src/look.js +22 -16
- package/src/mindmap.js +208 -0
- package/src/pptx.js +157 -26
- package/src/render.js +126 -20
- package/src/template.js +451 -26
- package/src/version.js +1 -1
package/dist/template.mjs
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
var D=/^[a-z][a-z0-9-]{0,31}$/,L=/^(auto|min-content|max-content|\d{1,2}(\.\d)?fr|\d{1,3}%)$/,K=["Title Slide","Title and Content","Section Header","Two Content","Comparison","Title Only","Blank","Content with Caption","Picture with Caption"],z={align:["start","center","end"],justify:["start","center","end"],paper:["paper","fill","ink","soft"],title:["normal","large","huge"],logo:["small","big","none"]},R=["top-end","top-start","bottom-end","bottom-start"],B=e=>typeof e=="string"&&e.length<=7e5&&/^data:image\/(png|jpeg|gif|webp|svg\+xml);base64,[a-z0-9+/]+=*$/i.test(e)?e:null;var _={name:"standard",tokens:{},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(([e,o])=>[e,F(o).layout]))};function F(e){let o=[];if(!e||typeof e!="object")return{layout:null,problems:["not a layout"]};let s={},i=Array.isArray(e.slots)||typeof e.slots=="string"?[e.slots].flat().map(String):e.slots&&typeof e.slots=="object"?Object.entries(e.slots).map(([l,d])=>(d&&typeof d=="object"&&(s[l]=W(d)),l==="title"?"default":l)):["default"],n=[...new Set(i)];if(!n.every(l=>D.test(l)))return{layout:null,problems:["a slot name is not a-z, 0-9 and -"]};n.includes("default")||n.unshift("default");let p=(Array.isArray(e.areas)?e.areas.map(l=>[l].flat().join(" ")):String(e.areas??n.join(" ")).split(/\||\n/)).map(l=>l.trim().replace(/^"|"$/g,"").split(/\s+/)).filter(l=>l.length&&l[0]),y=p[0]?.length??0;if(!p.length||p.some(l=>l.length!==y)||p.flat().some(l=>l!=="."&&!n.includes(l)))return{layout:null,problems:["areas are not a rectangle of its slots"]};for(let l of n){let d=p.flatMap((T,S)=>T.map((A,N)=>[A,N,S])).filter(([T])=>T===l);if(!d.length){l!=="default"&&o.push(`slot ${l} has no area`);continue}let $=d.map(T=>T[1]),j=d.map(T=>T[2]);if(d.length!==(Math.max(...$)-Math.min(...$)+1)*(Math.max(...j)-Math.min(...j)+1))return{layout:null,problems:[`slot ${l} is not a rectangle`]}}let h=(l,d)=>{let $=l===void 0?Array(d).fill("1fr"):(Array.isArray(l)?l:String(l).split(/\s+/)).map(String);return $.length===d&&$.every(j=>L.test(j))?$:null},b=h(e.columns,y),x=h(e.rows,p.length);if(!b||!x)return{layout:null,problems:["columns or rows are not tracks deck knows (auto, 1fr, 40%…), one per column or row"]};let m=(l,d)=>{let $=String(e[l]??d);return z[l].includes($)?$:(o.push(`${l} ${$} is not one of ${z[l].join(", ")}`),d)},w=typeof e.label=="string"||e.label&&typeof e.label=="object"?e.label:void 0,a=l=>typeof l=="string"?l.slice(0,300):void 0;return{layout:{label:w,intent:a(e.intent),use_when:a(e.use_when),avoid_when:a(e.avoid_when),slots:n,budgets:s,areas:p,columns:b,rows:x,align:m("align","start"),justify:m("justify","start"),paper:m("paper","paper"),title:m("title","normal"),logo:m("logo","small"),pptx:K.includes(e.pptx)?e.pptx:n.length>1?"Comparison":"Title and Content",numbered:e.numbered!==!1},problems:o}}function W(e){let o={};for(let s of["max_words","max_chars","item_max_words","heading_max_words"])Number.isInteger(e[s])&&e[s]>0&&(o[s]=e[s]);return Array.isArray(e.items)&&e.items.length===2&&e.items.every(Number.isInteger)&&(o.items=e.items),typeof e.required=="boolean"&&(o.required=e.required),typeof e.kind=="string"&&/^[a-z-]{1,20}$/.test(e.kind)&&(o.kind=e.kind),o}function q(e){if(!e||typeof e!="object")return{};if(!JSON.stringify(e).includes('"$value"'))return e;let o=w=>w&&typeof w=="object"&&"$value"in w?w.$value:w,s=w=>{let a=o(w);return typeof a=="string"?a:typeof a?.hex=="string"?a.hex:void 0},i=w=>{let a=o(w);return Array.isArray(a)?a.map(String):typeof a=="string"?[a]: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"},u=w=>Object.fromEntries(Object.entries(w??{}).filter(([a])=>a in n).map(([a,l])=>[n[a],s(l)]).filter(([,a])=>a)),p=e.color??e.colour??{},y={...u(p),...u(p.light)},h=u(p.dark);Object.keys(h).length&&(y.dark=h);let b=e.font??e.fontFamily??{},x=i(b.heading??b.display??b.sans),m=i(b.body??b.text??b.sans);return(x||m)&&(y.fonts={heading:x??m,body:m??x}),y}function I(...e){let o={name:"standard",tokens:{},layouts:{..._.layouts}},s=[];for(let i of e)if(!(!i||typeof i!="object")){if(typeof i.name=="string"&&(o.name=i.name),i.tokens&&typeof i.tokens=="object"){let n=q(i.tokens),u=n.dark&&typeof n.dark=="object"?{...o.tokens.dark,...n.dark}:o.tokens.dark;o.tokens={...o.tokens,...n,...u&&{dark:u}}}for(let[n,u]of Object.entries(i.layouts??i.types??{})){if(!D.test(n)){s.push(`layout ${n}: not a-z, 0-9 and -`);continue}if(u===!1){n!=="default"&&delete o.layouts[n];continue}let{layout:p,problems:y}=F(u);s.push(...y.map(h=>`layout ${n}: ${h}`)),p&&(o.layouts[n]=p)}}for(let[i,n]of[["logo",o.tokens],["dark logo",o.tokens.dark]])n?.logo!==void 0&&!B(n.logo)&&(s.push(`${i}: not a picture inside the kit (PNG, JPEG, GIF, WebP or SVG as data:, 512 KB at most)`),delete n.logo);return o.tokens.logoAt!==void 0&&!R.includes(o.tokens.logoAt)&&(s.push(`logoAt ${o.tokens.logoAt} is not one of ${R.join(", ")}`),delete o.tokens.logoAt),{kit:o,problems:s}}var G={"Title Slide":"cover","Title and Content":"default","Section Header":"section","Two Content":"two-cols-header","Title Only":"center",Blank:"none"},H=["Title Slide","Title and Content","Section Header","Two Content","Comparison","Title Only","Blank","Content with Caption","Picture with Caption"],V={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml"};function X(e){let o=new DataView(e.buffer,e.byteOffset,e.byteLength),s=e.length-22;for(;s>=0&&o.getUint32(s,!0)!==101010256;)s--;if(s<0)throw new Error("not a PowerPoint file");let i=new Map;for(let n=o.getUint32(s+16,!0),u=o.getUint16(s+10,!0);u>0;u--){let p=o.getUint16(n+10,!0),y=o.getUint32(n+20,!0),h=new TextDecoder().decode(e.subarray(n+46,n+46+o.getUint16(n+28,!0))),b=o.getUint32(n+42,!0),x=b+30+o.getUint16(b+26,!0)+o.getUint16(b+28,!0),m=e.subarray(x,x+y);i.set(h,async()=>p===0?m:new Uint8Array(await new Response(new Blob([m]).stream().pipeThrough(new DecompressionStream("deflate-raw"))).arrayBuffer())),n+=46+o.getUint16(n+28,!0)+o.getUint16(n+30,!0)+o.getUint16(n+32,!0)}return i}var k=(e,o)=>new RegExp(`\\b${o}="([^"]*)"`).exec(e)?.[1],J=(e,o)=>new Map([...e.matchAll(/<Relationship\b[^>]*>/g)].map(([s])=>[String(k(s,"Id")),new URL(String(k(s,"Target")),`file:///${o}/`).pathname.slice(1)]));async function tt(e,{name:o}={}){let s=X(e),i=[],n=async t=>new TextDecoder().decode(await(s.get(t)?.()??new Uint8Array)),u=[...s.keys()].filter(t=>/^(ppt|theme)\/slideMasters\/slideMaster\d+\.xml$/.test(t)).sort()[0];if(!u)throw new Error("no slide master: not a PowerPoint template");let p=u.split("/")[0],y=await n(u),h=J(await n(u.replace(/([^/]+)$/,"_rels/$1.rels")),`${p}/slideMasters`),b=[...h.values()].find(t=>/theme\/theme\d+\.xml$/.test(t))??`${p}/theme/theme1.xml`,x=await n(b),[m,w]=(t=>[Number(k(t,"cx")??12192e3),Number(k(t,"cy")??6858e3)])(/<p:sldSz\b[^>]*>/.exec(await n(`${p}/presentation.xml`))?.[0]??""),a=Object.fromEntries([...x.matchAll(/<a:(dk1|lt1|dk2|lt2|accent[1-6])>\s*<a:(?:srgbClr\b[^>]*\bval|sysClr\b[^>]*\blastClr)="([0-9A-Fa-f]{6})"/g)].map(([,t,r])=>[t,`#${r.toLowerCase()}`])),l=t=>k(new RegExp(`<a:${t}>[\\s\\S]*?<a:latin\\b[^>]*>`).exec(x)?.[0].replace(/^[\s\S]*<a:latin/,"")??"","typeface"),[d,$]=[l("majorFont"),l("minorFont")].map(t=>t&&!t.startsWith("+")?[t,"ui-sans-serif","system-ui","sans-serif"]:null),j={...a.lt1&&{paper:a.lt1},...a.dk1&&{ink:a.dk1},...a.accent1&&{primary:a.accent1},...a.dk2&&{muted:a.dk2},...a.lt2&&{soft:a.lt2}},T=[1,2,3,4,5,6].map(t=>a[`accent${t}`]).filter(Boolean);T.length&&(j.series=T),(d||$)&&(j.fonts={heading:d??$,body:$??d});for(let[t]of y.matchAll(/<p:pic>[\s\S]*?<\/p:pic>/g)){let r=h.get(String(k(/<a:blip\b[^>]*>/.exec(t)?.[0]??"","r:embed"))),c=V[/\.(\w+)$/.exec(r??"")?.[1].toLowerCase()??""];if(!r||!c||!s.has(r))continue;let f=await s.get(r)?.(),g=f&&`data:${c};base64,${Y(f)}`;if(!B(g)){i.push(`the logo ${r.split("/").pop()} is larger than 512 KB`);break}let[P,C]=(U=>[Number(k(U,"x")??0),Number(k(U,"y")??0)])(/<a:off\b[^>]*>/.exec(t)?.[0]??"");Object.assign(j,{logo:g,logoAt:`${C<w/2?"top":"bottom"}-${P<m/2?"start":"end"}`});break}let S=t=>[...t.matchAll(/<p:sp>[\s\S]*?<\/p:sp>/g)].flatMap(([r])=>{let c=/<p:ph\b[^>]*>/.exec(r)?.[0];if(!c)return[];let f=/<a:off\b[^>]*>/.exec(r)?.[0],g=/<a:ext\b[^>]*>/.exec(r)?.[0];return[{type:k(c,"type")??"body",name:k(/<p:cNvPr\b[^>]*>/.exec(r)?.[0]??"","name")??"",box:f&&g?[Number(k(f,"x")),Number(k(f,"y")),Number(k(g,"cx")),Number(k(g,"cy"))]:null}]}),A=S(y),N=t=>{let r=/<p:bg>[\s\S]*?<\/p:bg>/.exec(t)?.[0]??"",c=k(/<a:schemeClr\b[^>]*>/.exec(r)?.[0]??"","val"),f=k(/<a:srgbClr\b[^>]*>/.exec(r)?.[0]??"","val")?.toLowerCase();return c==="accent1"||f&&`#${f}`===a.accent1?"fill":c==="tx1"||c==="dk1"||f&&`#${f}`===a.dk1?"ink":c==="bg2"||c==="lt2"?"soft":"paper"},O={},M=[...h.values()].filter(t=>/slideLayouts\/slideLayout\d+\.xml$/.test(t)).sort((t,r)=>Number(/(\d+)\.xml$/.exec(t)?.[1])-Number(/(\d+)\.xml$/.exec(r)?.[1]));for(let t of M){let r=await n(t),c=(k(/<p:cSld\b[^>]*>/.exec(r)?.[0]??"","name")??"").replace(/&/g,"&").trim(),f=S(r).filter(C=>!["dt","ftr","sldNum"].includes(C.type)).map(C=>({...C,box:C.box??A.find(U=>U.type===C.type||C.type==="ctrTitle"&&U.type==="title")?.box??null})).filter(C=>C.box),g=G[c]??(c.toLowerCase().normalize("NFKD").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/^(?=\d)/,"l-").slice(0,32)||`layout-${M.indexOf(t)+1}`),P=Q(f,m,w);if(!P){i.push(`layout ${c||g}: its placeholders make no grid deck lays out`);continue}O[g]={label:c||g,...P,paper:N(r),title:f.some(C=>C.type==="ctrTitle")?"huge":"normal",logo:_.layouts[g]?.logo??"small",...f.some(C=>C.type==="ctrTitle")&&{justify:"center"},pptx:H.includes(c)?c:P.slots.length>1?"Comparison":"Title and Content",numbered:/<p:ph\b[^>]*type="sldNum"/.test(r)}}let E=I({name:o??"template",tokens:j,layouts:O});return{kit:{...E.kit,name:o??"template"},problems:[...i,...E.problems]}}function Q(e,o,s){let i=t=>["title","ctrTitle","subTitle"].includes(t.type),n=t=>t.box,u=(t,r)=>Math.abs(t[0]-r[0])<o*.05&&Math.abs(t[2]-r[2])<o*.05&&t[1]>r[1],p=e.filter(i),y=t=>/^body-([a-z][a-z0-9-]{0,31})$/.exec(t.name)?.[1],h=e.filter(t=>!i(t)).sort((t,r)=>n(t)[0]-n(r)[0]||n(t)[1]-n(r)[1]),b=p.length?h.length===1&&!y(h[0])?h[0]:h.find(t=>y(t)==="default"||!y(t)&&u(n(t),n(p[0]))):void 0,x=b?[...p,b]:p,m=h.filter(t=>t!==b),w=t=>t.length?((r,c,f,g)=>[r,c,f-r,g-c])(Math.min(...t.map(r=>r[0])),Math.min(...t.map(r=>r[1])),Math.max(...t.map(r=>r[0]+r[2])),Math.max(...t.map(r=>r[1]+r[3]))):null,a=x.length?m:m.slice(1),l=x.length?w(x.map(n)):m.length?n(m[0]):[0,0,o,s],d=a.every((t,r)=>!r||n(t)[0]>=(n(a[r-1])[0]+n(a[r-1])[2])*.98),$=d&&a.length===2&&x.length?["left","right"]:d&&a.length===3&&x.length?["left","middle","right"]:d&&a.length===1?["right"]:d&&a.length===2?["middle","right"]:a.map((t,r)=>`s${r+1}`),j=[["default",l],...a.map((t,r)=>[y(t)??$[r],n(t)])],T=(t,r,c)=>[...new Set(j.flatMap(([,f])=>[f[t],f[t]+f[r]]))].sort((f,g)=>f-g).reduce((f,g)=>f.length&&g-f[f.length-1]<c*.03?f:[...f,g],[]),S=T(0,2,o),A=T(1,3,s),N=(t,r,c)=>r>=t[0]-o*.03&&r<=t[0]+t[2]+o*.03&&c>=t[1]-s*.03&&c<=t[1]+t[3]+s*.03,O=A.slice(1).map((t,r)=>S.slice(1).map((c,f)=>j.find(([,g])=>N(g,(S[f]+c)/2,(A[r]+t)/2))?.[0]??"."));if(!O.length||!O[0].length)return null;let M=(t,r)=>t.length===2?["1fr"]:t.slice(1).map((c,f)=>`${Math.max(.1,Math.round((c-t[f])/r*100)/10)}fr`),E=M(A,s).map((t,r)=>j.length>1&&O[r].every(c=>c==="default"||c===".")?"auto":t);return{slots:j.map(([t])=>t),areas:O.map(t=>t.join(" ")).join(" | "),columns:M(S,o).join(" "),rows:E.join(" ")}}function Y(e){let o="";for(let s=0;s<e.length;s+=32768)o+=String.fromCharCode(...e.subarray(s,s+32768));return btoa(o)}function et(e){let o=n=>typeof n=="string"?{$type:"color",$value:n}:void 0,s=n=>Object.fromEntries(Object.entries({bg:n.paper,fg:n.ink,accent:n.primary,muted:n.muted,surface:n.soft}).flatMap(([u,p])=>o(p)?[[u,o(p)]]:[])),i=e.fonts??{};return{color:{light:s(e),...e.dark&&{dark:s(e.dark)},...e.series&&{series:Object.fromEntries(e.series.map((n,u)=>[`s${u+1}`,o(n)]))}},...(i.heading||i.body)&&{font:{...i.heading&&{heading:{$type:"fontFamily",$value:i.heading}},...i.body&&{body:{$type:"fontFamily",$value:i.body}}}}}}export{tt as kitFromTemplate,et 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(/&/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};
|
|
2
4
|
//# sourceMappingURL=template.mjs.map
|