satori 0.0.18 → 0.0.21

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 CHANGED
@@ -9,7 +9,7 @@ Satori translates the layout and styles of HTML & CSS based elements into an SVG
9
9
  ```jsx
10
10
  import satori from 'satori'
11
11
 
12
- satori(
12
+ const svg = await satori(
13
13
  <div style={{ color: 'black' }}>hello, world</div>,
14
14
  {
15
15
  width: 600,
@@ -55,7 +55,7 @@ elements (see section below), or custom React components, but React APIs such as
55
55
  If you don't have JSX transpiler enabled, you can simply pass [React-elements-like objects](https://reactjs.org/docs/introducing-jsx.html) that have `type`, `props.children` and `props.style` (and other properties too) directly:
56
56
 
57
57
  ```js
58
- satori(
58
+ await satori(
59
59
  {
60
60
  type: 'div',
61
61
  props: {
@@ -82,7 +82,7 @@ You can find the list of supported HTML elements and their preset styles [here](
82
82
  You can use `<img>` to embed images but `src`, `width`, and `height` attributes are all required.
83
83
 
84
84
  ```jsx
85
- satori(
85
+ await satori(
86
86
  <img src="https://picsum.photos/200/300" width={200} height={300} />,
87
87
  options
88
88
  )
@@ -92,24 +92,6 @@ When using `background-image`, the image will be stretched to fit the element by
92
92
 
93
93
  If you want to render the generated SVG to another image format such as PNG, it would be better to use base64 encoded image data directly as `props.src` so no extra I/O is needed.
94
94
 
95
- #### Emojis
96
-
97
- To render custom images for specific graphemes, you can use `graphemeImages` option to map the grapheme to an image source:
98
-
99
- ```jsx
100
- satori(
101
- <div>Next.js is 🤯!</div>,
102
- {
103
- ...,
104
- graphemeImages: {
105
- '🤯': 'https://twemoji.maxcdn.com/v/13.1.0/svg/1f92f.svg',
106
- },
107
- }
108
- )
109
- ```
110
-
111
- The image will be resized to the current font-size (both width and height), so it must be a square.
112
-
113
95
  ### CSS Properties
114
96
 
115
97
  | Property | Supported Values |
@@ -131,7 +113,7 @@ The image will be resized to the current font-size (both width and height), so i
131
113
  | `align-content` | Supported |
132
114
  | `align-self` | Supported |
133
115
  | `justify-content` | Supported |
134
- | `font-family` | Support single value |
116
+ | `font-family` | Supported |
135
117
  | `font-size` | Supported |
136
118
  | `font-weight` | Supported |
137
119
  | `font-style` | Supported |
@@ -158,6 +140,7 @@ The image will be resized to the current font-size (both width and height), so i
158
140
  | `line-height` | Supported |
159
141
  | `background-clip` | Support `border-box` and `text` |
160
142
  | `background-repeat` | Supported |
143
+ | `filter` | Supported |
161
144
 
162
145
  Note:
163
146
 
@@ -167,6 +150,51 @@ Note:
167
150
  4. `calc` isn't supported.
168
151
  5. `overflow: hidden` and `transform` can't be used together.
169
152
 
153
+ ### Typography
154
+
155
+ Advanced typography features such as kerning, ligatures and other OpenType features are not currently supported.
156
+
157
+ RTL languages are not supported either.
158
+
159
+ #### Emojis
160
+
161
+ To render custom images for specific graphemes, you can use `graphemeImages` option to map the grapheme to an image source:
162
+
163
+ ```jsx
164
+ await satori(
165
+ <div>Next.js is 🤯!</div>,
166
+ {
167
+ ...,
168
+ graphemeImages: {
169
+ '🤯': 'https://twemoji.maxcdn.com/v/13.1.0/svg/1f92f.svg',
170
+ },
171
+ }
172
+ )
173
+ ```
174
+
175
+ The image will be resized to the current font-size (both width and height), so it must be a square.
176
+
177
+ #### Dynamically Load Emojis and Fonts
178
+
179
+ Satori supports an option to dynamically load emoji images (grapheme pictures) and fonts when they're used but missing:
180
+
181
+ ```jsx
182
+ await satori(
183
+ <div>👋 你好</div>,
184
+ {
185
+ // `code` will be the detected language code, `emoji` if it's an Emoji, or `unknwon` if not able to tell.
186
+ // `segment` will be the content to render.
187
+ loadAdditionalAsset: async (code: string, segment: string) => {
188
+ // if segment is an emoji
189
+ return `data:image/svg+xml;base64,...`
190
+
191
+ // if segment is normal text
192
+ return loadFontFromSystem(code)
193
+ }
194
+ }
195
+ )
196
+ ```
197
+
170
198
  ## Contribute
171
199
 
172
200
  This project uses [pnpm](https://pnpm.io). To install dependencies, run:
package/dist/esm/index.js CHANGED
@@ -1,5 +1,6 @@
1
- var xt=Object.defineProperty,St=Object.defineProperties;var _t=Object.getOwnPropertyDescriptors;var rt=Object.getOwnPropertySymbols;var Et=Object.prototype.hasOwnProperty,Rt=Object.prototype.propertyIsEnumerable;var nt=(t,r,e)=>r in t?xt(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e,D=(t,r)=>{for(var e in r||(r={}))Et.call(r,e)&&nt(t,e,r[e]);if(rt)for(var e of rt(r))Rt.call(r,e)&&nt(t,e,r[e]);return t},te=(t,r)=>St(t,_t(r));import*as Tt from"yoga-layout-prebuilt";var it=Tt;var ve;ve=it.default;function wt(t){ve=t}function Q(){return ve}import{LineBreaker as It}from"css-line-break";import{splitGraphemes as Lt}from"text-segmentation";function ke(t){let r=typeof t;return!(r==="number"||r==="bigint"||r==="string"||r==="boolean")}function ot(t){return/^class\s/.test(Function.prototype.toString.call(t))}function fe(t,r){return[t[0]*r[0]+t[2]*r[1],t[1]*r[0]+t[3]*r[1],t[0]*r[2]+t[2]*r[3],t[1]*r[2]+t[3]*r[3],t[0]*r[4]+t[2]*r[5]+t[4],t[1]*r[4]+t[3]*r[5]+t[5]]}function H(t,r,e){let o=r[t];return typeof o=="undefined"?e:o}var at=void 0,Ae=typeof Intl!="undefined"&&"Segmenter"in Intl&&process.env.NODE_ENV!=="test",Ct=Ae?new Intl.Segmenter(at,{granularity:"word"}):null,vt=Ae?new Intl.Segmenter(at,{granularity:"grapheme"}):null,de=[32,160,4961,65792,65793,4153,4241,10].map(t=>String.fromCodePoint(t)),kt=t=>{let r=It(t,{lineBreak:"strict",wordBreak:"normal"}),e=[],o;for(;!(o=r.next()).done;)if(o.value){let a=o.value.slice(),i="";for(let n=0;n<a.length;n++){let s=a[n];de.includes(s)?(i.length&&e.push(i),e.push(s),i=""):i+=s}i.length&&e.push(i)}return e};function ce(t,r){return Ae?r==="word"?[...Ct.segment(t)].map(e=>e.segment):[...vt.segment(t)].map(e=>e.segment):r==="word"?kt(t):Lt(t)}function y(t,r,e){let o="";for(let[a,i]of Object.entries(r))typeof i!="undefined"&&(o+=` ${a}="${i}"`);return e?`<${t}${o}>${e}</${t}>`:`<${t}${o}/>`}var st={p:{display:"block",marginTop:"1em",marginBottom:"1em"},div:{display:"block"},blockquote:{display:"block",marginTop:"1em",marginBottom:"1em",marginLeft:40,marginRight:40},center:{display:"block",textAlign:"center"},hr:{display:"block",marginTop:"0.5em",marginBottom:"0.5em",marginLeft:"auto",marginRight:"auto",borderWidth:1,borderStyle:"inset"},h1:{display:"block",fontSize:"2em",marginTop:"0.67em",marginBottom:"0.67em",marginLeft:0,marginRight:0,fontWeight:"bold"},h2:{display:"block",fontSize:"1.5em",marginTop:"0.83em",marginBottom:"0.83em",marginLeft:0,marginRight:0,fontWeight:"bold"},h3:{display:"block",fontSize:"1.17em",marginTop:"1em",marginBottom:"1em",marginLeft:0,marginRight:0,fontWeight:"bold"},h4:{display:"block",marginTop:"1.33em",marginBottom:"1.33em",marginLeft:0,marginRight:0,fontWeight:"bold"},h5:{display:"block",fontSize:"0.83em",marginTop:"1.67em",marginBottom:"1.67em",marginLeft:0,marginRight:0,fontWeight:"bold"},h6:{display:"block",fontSize:"0.67em",marginTop:"2.33em",marginBottom:"2.33em",marginLeft:0,marginRight:0,fontWeight:"bold"},u:{textDecoration:"underline"},strong:{fontWeight:"bold"},b:{fontWeight:"bold"},i:{fontStyle:"italic"},em:{fontStyle:"italic"},code:{fontFamily:"monospace"},kbd:{fontFamily:"monospace"},pre:{display:"block",fontFamily:"monospace",whiteSpace:"pre",marginTop:"1em",marginBottom:"1em"},mark:{backgroundColor:"yellow",color:"black"},big:{fontSize:"larger"},small:{fontSize:"smaller"},s:{textDecoration:"line-through"}};var At=new Set(["color","font","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","textAlign","textTransform","textShadowOffset","textShadowColor","textShadowRadius","textDecorationLine","textDecorationStyle","textDecorationColor","whiteSpace","transform","wordBreak","opacity","_viewportWidth","_viewportHeight","_inheritedClipPathId","_inheritedBackgroundClipTextPath"]);function Pe(t){let r={};for(let e in t)At.has(e)&&(r[e]=t[e]);return r}import{getPropertyName as Ft,getStylesForProperty as $t}from"css-to-react-native";import ut from"parse-css-dimension";import{parseElementStyle as Nt}from"css-background-parser";import Pt from"postcss-value-parser";import Wt from"parse-css-dimension";function Ot(t,r){try{let e=new Wt(t);switch(e.unit){case"px":return{absolute:e.value};case"em":return{absolute:e.value*r};case"rem":return{absolute:e.value*16};case"%":return{relative:e.value};default:return{}}}catch{return{}}}function We(t,r,e){switch(t){case"top":return{yRelative:0};case"left":return{xRelative:0};case"right":return{xRelative:100};case"bottom":return{yRelative:100};case"center":return{};default:let o=Ot(t,r);return o.absolute?{[e?"xAbsolute":"yAbsolute"]:o.absolute}:o.relative?{[e?"xRelative":"yRelative"]:o.relative}:{}}}function Oe(t,r){if(typeof t=="number")return{xAbsolute:t};let e;try{e=Pt(t).nodes.filter(o=>o.type==="word").map(o=>o.value)}catch{return{}}return e.length===1?We(e[0],r,!0):e.length===2?((e[0]==="top"||e[0]==="bottom"||e[1]==="left"||e[1]==="right")&&e.reverse(),D(D({},We(e[0],r,!0)),We(e[1],r,!1))):{}}var Mt=new Set(["flex","flexGrow","flexShrink","flexBasis","fontWeight","lineHeight","opacity","scale","scaleX","scaleY"]),Gt=new Set(["lineHeight"]),ft=[1,0,0,1,0,0];function Dt(t,r,e,o){return t==="border"&&!e.includes(r.borderColor)?r.borderColor=o:t==="textDecoration"&&!e.includes(r.textDecorationColor)&&(r.textDecorationColor=o),r}function lt(t,r){return typeof r=="number"?Mt.has(t)?Gt.has(t)?r:String(r):r+"px":r}function Fe(t,r,e,{percentage:o}={percentage:!1}){if(typeof t=="number")return t;try{let a=new ut(t);if(a.type==="length")switch(a.unit){case"em":return a.value*r;case"rem":return a.value*16;case"vw":return~~(a.value*e._viewportWidth/100);case"vh":return~~(a.value*e._viewportHeight/100);default:return a.value}else if(a.type==="angle")switch(a.unit){case"deg":return a.value;case"rad":return a.value*180/Math.PI;default:return a.value}else if(a.type==="percentage"&&o)return a.value/100*r}catch{}}function Ee(t,r){let e={};for(let a in t){if(a.startsWith("_")){e[a]=t[a];continue}let i=Ft(a);Object.assign(e,i==="lineHeight"?{lineHeight:lt(i,t[a])}:Dt(i,$t(i,lt(i,t[a]),!0),t[a],t.color||r.color))}if(e.backgroundImage){let{backgrounds:a}=Nt(e);e.backgroundImage=a}let o=e.fontSize||r.fontSize;if(typeof o=="string")try{let a=new ut(o);switch(a.unit){case"em":o=a.value*r.fontSize;break;case"rem":o=a.value*16;break}}catch{o=16}typeof e.fontSize!="undefined"&&(e.fontSize=o),e.transformOrigin&&(e.transformOrigin=Oe(e.transformOrigin,o));for(let a in e){let i=e[a];if(a==="lineHeight")typeof i=="string"&&(i=e[a]=Fe(i,o,r,{percentage:!0})/o);else if(typeof i=="string"){let n=Fe(i,o,r);typeof n!="undefined"&&(e[a]=n),i=e[a]}if(a==="opacity"&&(i=e[a]=i*r.opacity),a==="transform"){let n=[...ft],s=i;for(let f of s){let p=Object.keys(f)[0],g=f[p],u=typeof g=="string"?Fe(g,o,r):g,m=[...ft];switch(p){case"translateX":m[4]=u;break;case"translateY":m[5]=u;break;case"scale":m[0]=u,m[3]=u;break;case"scaleX":m[0]=u;break;case"scaleY":m[3]=u;break;case"rotate":let h=u*Math.PI/180,d=Math.cos(h),c=Math.sin(h);m[0]=d,m[1]=c,m[2]=-c,m[3]=d;break;case"skewX":m[2]=Math.tan(u*Math.PI/180);break;case"skewY":m[1]=Math.tan(u*Math.PI/180);break}n=fe(m,n)}e.transform=n}}return e}function $e(t,r,e,o,a){let i=Q(),n=D(D(D({},e),Ee(st[r],e)),Ee(o,e));if(r==="img"){let s=parseInt(a.width),p=parseInt(a.height)/s;n.width||(n.width=s),n.height||(n.height=p*n.width)}return t.setDisplay(H(n.display,{flex:i.DISPLAY_FLEX,none:i.DISPLAY_NONE},i.DISPLAY_FLEX)),t.setAlignContent(H(n.alignContent,{stretch:i.ALIGN_STRETCH,center:i.ALIGN_CENTER,"flex-start":i.ALIGN_FLEX_START,"flex-end":i.ALIGN_FLEX_END,"space-between":i.ALIGN_SPACE_BETWEEN,"space-around":i.ALIGN_SPACE_AROUND,baseline:i.ALIGN_BASELINE,normal:i.ALIGN_AUTO},i.ALIGN_AUTO)),t.setAlignItems(H(n.alignItems,{stretch:i.ALIGN_STRETCH,center:i.ALIGN_CENTER,"flex-start":i.ALIGN_FLEX_START,"flex-end":i.ALIGN_FLEX_END,baseline:i.ALIGN_BASELINE,normal:i.ALIGN_AUTO},i.ALIGN_FLEX_START)),t.setAlignSelf(H(n.alignSelf,{stretch:i.ALIGN_STRETCH,center:i.ALIGN_CENTER,"flex-start":i.ALIGN_FLEX_START,"flex-end":i.ALIGN_FLEX_END,baseline:i.ALIGN_BASELINE,normal:i.ALIGN_AUTO},i.ALIGN_AUTO)),t.setJustifyContent(H(n.justifyContent,{center:i.JUSTIFY_CENTER,"flex-start":i.JUSTIFY_FLEX_START,"flex-end":i.JUSTIFY_FLEX_END,"space-between":i.JUSTIFY_SPACE_BETWEEN,"space-around":i.JUSTIFY_SPACE_AROUND},i.JUSTIFY_FLEX_START)),t.setFlexDirection(H(n.flexDirection,{row:i.FLEX_DIRECTION_ROW,column:i.FLEX_DIRECTION_COLUMN,"row-reverse":i.FLEX_DIRECTION_ROW_REVERSE,"column-reverse":i.FLEX_DIRECTION_COLUMN_REVERSE},i.FLEX_DIRECTION_ROW)),t.setFlexWrap(H(n.flexWrap,{wrap:i.WRAP_WRAP,nowrap:i.WRAP_NO_WRAP,"wrap-reverse":i.WRAP_WRAP_REVERSE},i.WRAP_WRAP)),typeof n.flexBasis!="undefined"&&t.setFlexBasis(n.flexBasis),t.setFlexGrow(typeof n.flexGrow=="undefined"?0:n.flexGrow),t.setFlexShrink(typeof n.flexShrink=="undefined"?0:n.flexShrink),typeof n.maxHeight!="undefined"&&t.setMaxHeight(n.maxHeight),typeof n.maxWidth!="undefined"&&t.setMaxWidth(n.maxWidth),typeof n.minHeight!="undefined"&&t.setMinHeight(n.minHeight),typeof n.minWidth!="undefined"&&t.setMinWidth(n.minWidth),t.setOverflow(H(n.overflow,{visible:i.OVERFLOW_VISIBLE,hidden:i.OVERFLOW_HIDDEN},i.OVERFLOW_VISIBLE)),t.setMargin(i.EDGE_TOP,n.marginTop||0),t.setMargin(i.EDGE_BOTTOM,n.marginBottom||0),t.setMargin(i.EDGE_LEFT,n.marginLeft||0),t.setMargin(i.EDGE_RIGHT,n.marginRight||0),t.setBorder(i.EDGE_TOP,n.borderWidth||0),t.setBorder(i.EDGE_BOTTOM,n.borderWidth||0),t.setBorder(i.EDGE_LEFT,n.borderWidth||0),t.setBorder(i.EDGE_RIGHT,n.borderWidth||0),t.setPadding(i.EDGE_TOP,n.paddingTop||0),t.setPadding(i.EDGE_BOTTOM,n.paddingBottom||0),t.setPadding(i.EDGE_LEFT,n.paddingLeft||0),t.setPadding(i.EDGE_RIGHT,n.paddingRight||0),t.setPositionType(H(n.position,{absolute:i.POSITION_TYPE_ABSOLUTE,relative:i.POSITION_TYPE_RELATIVE},i.POSITION_TYPE_RELATIVE)),typeof n.top!="undefined"&&t.setPosition(i.EDGE_TOP,n.top),typeof n.bottom!="undefined"&&t.setPosition(i.EDGE_BOTTOM,n.bottom),typeof n.left!="undefined"&&t.setPosition(i.EDGE_LEFT,n.left),typeof n.right!="undefined"&&t.setPosition(i.EDGE_RIGHT,n.right),typeof n.height!="undefined"?t.setHeight(n.height):t.setHeightAuto(),typeof n.width!="undefined"?t.setWidth(n.width):t.setWidthAuto(),[n,Pe(n)]}function re({left:t,top:r,width:e,height:o},a,i,n){var f,p,g,u;let s;if(i)s=a;else{let m=(p=n==null?void 0:n.xAbsolute)!=null?p:((f=n==null?void 0:n.xRelative)!=null?f:50)*e/100,h=(u=n==null?void 0:n.yAbsolute)!=null?u:((g=n==null?void 0:n.yRelative)!=null?g:50)*o/100,d=t+m,c=r+h;s=fe([1,0,0,1,d,c],fe(a,[1,0,0,1,-d,-c])),a.__parent&&(s=fe(a.__parent,s)),a.splice(0,6,...s)}return`matrix(${s.map(m=>m.toFixed(2)).join(",")})`}function dt({left:t,top:r,width:e,height:o,isInheritingTransform:a},i){let n="",s=1;return i.transform&&(n=re({left:t,top:r,width:e,height:o},i.transform,a,i.transformOrigin)),i.opacity&&(s=+i.opacity),{matrix:n,opacity:s}}function Ne({id:t,content:r,filter:e,left:o,top:a,width:i,height:n,matrix:s,opacity:f,image:p,clipPathId:g,debug:u,shape:m,decorationShape:h},d){let c="";if(u&&(c=y("rect",{x:o,y:a,width:i,height:.5,fill:"transparent",stroke:"#575eff","stroke-width":1,transform:s||void 0,"clip-path":g?`url(#${g})`:void 0})),p){let x={href:p,x:o,y:a,width:i,height:n,transform:s||void 0,"clip-path":g?`url(#${g})`:void 0};return[(e?`${e}<g filter="url(#satori_s-${t})">`:"")+y("image",te(D({},x),{opacity:f!==1?f:void 0}))+(h||"")+(e?"</g>":"")+c,""]}let R={x:o,y:a,width:i,height:n,"font-weight":d.fontWeight,"font-style":d.fontStyle,"font-size":d.fontSize,"font-family":d.fontFamily,"letter-spacing":d.letterSpacing||void 0,transform:s||void 0,"clip-path":g?`url(#${g})`:void 0};return[(e?`${e}<g filter="url(#satori_s-${t})">`:"")+y("text",te(D({},R),{fill:d.color,opacity:f!==1?f:void 0}),r)+(h||"")+(e?"</g>":"")+c,m?y("text",R,r):""]}function ne({id:t,width:r,height:e},o){if(!o.shadowColor||!o.shadowOffset||typeof o.shadowRadius=="undefined")return"";let a=o.shadowRadius*o.shadowRadius/4,i=Math.min(o.shadowOffset.width-a,0),n=Math.max(o.shadowOffset.width+a+r,r),s=Math.min(o.shadowOffset.height-a,0),f=Math.max(o.shadowOffset.height+a+e,e);return`<defs><filter id="satori_s-${t}" x="${i/r*100}%" y="${s/e*100}%" width="${(n-i)/r*100}%" height="${(f-s)/e*100}%"><feDropShadow dx="${o.shadowOffset.width}" dy="${o.shadowOffset.height}" stdDeviation="${o.shadowRadius/2}" flood-color="${o.shadowColor}" flood-opacity="1"/></filter></defs>`}function Me({width:t,left:r,top:e,ascender:o,clipPathId:a},i){let{textDecorationColor:n,textDecorationStyle:s,textDecorationLine:f,fontSize:p}=i;if(!f||f==="none")return"";let g=Math.max(1,p*.1),u=f==="line-through"?e+o*.75:f==="underline"?e+o*1.25:e,m=s==="dashed"?`${g*1.2} ${g*2}`:s==="dotted"?`0 ${g*2}`:void 0;return y("line",{x1:r,y1:u,x2:r+t,y2:u,stroke:n,"stroke-width":g,"stroke-dasharray":m,"stroke-linecap":s==="dotted"?"round":"square","clip-path":a?`url(#${a})`:void 0})}var Ge=void 0;function*De(t,r){var Qe;let e=Q(),{parentStyle:o,inheritedStyle:a,parent:i,font:n,id:s,isInheritingTransform:f,debug:p,embedFont:g,graphemeImages:u}=r;o.textTransform==="uppercase"?t=t.toLocaleUpperCase(Ge):o.textTransform==="lowercase"?t=t.toLocaleLowerCase(Ge):o.textTransform==="capitalize"&&(t=ce(t,"word").map(_=>ce(_,"grapheme").map((E,N)=>N===0?E.toLocaleUpperCase(Ge):E).join("")).join(""));let m=H(o.wordBreak,{normal:"word","break-all":"grapheme","break-word":"grapheme","keep-all":"word"},"word"),h=ce(t,m),d=e.Node.create();d.setAlignItems(e.ALIGN_BASELINE),o.textAlign==="left"?d.setJustifyContent(e.JUSTIFY_FLEX_START):o.textAlign==="center"?d.setJustifyContent(e.JUSTIFY_CENTER):o.textAlign==="right"?d.setJustifyContent(e.JUSTIFY_FLEX_END):o.textAlign==="justify"&&d.setJustifyContent(e.JUSTIFY_SPACE_BETWEEN),i.insertChild(d,i.getChildCount());let{textAlign:c,textOverflow:R,whiteSpace:x,lineHeight:Y,_inheritedBackgroundClipTextPath:L}=o,O=n.getFont(o),F=o.fontSize,P=O.ascender/O.unitsPerEm*F,v=-(O.descender/O.unitsPerEm)*F,C=P+v,M=Y/1.2*F-C,W=C*Y/1.2,j=(o.fontSize-C)/2,G=[],U=[],S=[],$=new Map,z=_=>{if($.has(_))return $.get(_);let E=n.measure(O,_,o);return $.set(_,E),E},l=0,b="",T=0;for(let _ of h){let E=!1,N=u&&u[_];x==="pre"?E=_[0]===`
2
- `:x!=="nowrap"&&(N||de.includes(_[0]))&&(E=!0),E?(x==="nowrap"?T+=z(b)+o.fontSize:(l=Math.max(l,z(b)),N&&(l=Math.max(l,o.fontSize))),b=""):(!de.includes(_[0])||!b)&&(b+=_===`
3
- `?" ":_)}l=Math.max(l,z(b)+T);let X=i.getMinWidth(),ie=i.getMaxWidth(),gt=i.getWidth();isNaN(gt.value)&&(isNaN(X.value)||X.unit===1&&X.value>l)&&(isNaN(ie.value)||ie.unit===1&&(l=Math.min(l,ie.value)),i.setMinWidth(l)),typeof o.flexShrink=="undefined"&&i.setFlexShrink(1);let je=["pre-wrap","pre"].includes(x);d.setMeasureFunc(_=>{let E=0,N="",V=0,B=0,K=0,q=-1;G=[],U=[0];for(let Z=0;Z<h.length;Z++){let k=h[Z];if(!je&&de.includes(k[0]))N||(N=" "),V=z(N),S[Z]=null;else{let ae=je&&k===`
4
- `,A=ae?0:u&&u[k]?o.fontSize:z(k);B||(N="",V=0);let J=V||",.!?:-@)>]}%#".indexOf(k[0])<0,se=!B||!!V;ae||Z&&J&&B+V+A>_&&x!=="nowrap"&&x!=="pre"?(G.push(B),E++,B=A,U.push(1),q=-1,ae||(K=Math.max(K,_))):(B+=V+A,se&&U[U.length-1]++),N="",V=0,se&&q++,K=Math.max(K,B),S[Z]={y:E*W-j,x:B-A,width:A,line:E,lineIndex:q}}}return B&&(E++,G.push(B)),{width:K,height:E*W}});let[ht,bt]=yield,we="",ge="",oe=a._inheritedClipPathId,{left:Ke,top:qe,width:le,height:Ie}=d.getComputedLayout(),Le=i.getComputedWidth()-i.getComputedPadding(e.EDGE_LEFT)-i.getComputedPadding(e.EDGE_RIGHT)-i.getComputedBorder(e.EDGE_LEFT)-i.getComputedBorder(e.EDGE_RIGHT),he=ht+Ke,be=bt+qe,{matrix:ee,opacity:ye}=dt({left:Ke,top:qe,width:le,height:Ie,isInheritingTransform:f},o),ue="";o.textShadowOffset&&(ue=ne({width:le,height:Ie,id:s},{shadowColor:o.textShadowColor,shadowOffset:o.textShadowOffset,shadowRadius:o.textShadowRadius}));let xe="",Se="",Ce=-1,Ze=R==="ellipsis"?z("\u2026"):0,yt=R==="ellipsis"?z(" "):0,_e={};for(let _=0;_<h.length;_++){if(!S[_])continue;let E=S[_],N=h[_],V=null,B=u?u[N]:null,K=E.y,q=E.x,Z=E.width,k=E.line;if(k===Ce)continue;let ae=!1;if(G.length>1){let A=le-G[k];if(c==="right"||c==="end")q+=A;else if(c==="center")q+=A/2;else if(c==="justify"&&k<G.length-1){let J=U[k];q+=(J>1?A/(J-1):0)*E.lineIndex,ae=!0}}if(_e[k]||(_e[k]=[q,ae?le:G[k]]),R==="ellipsis"&&G[k]>Le&&E.x+Z+Ze+yt>Le){let A=ce(N,"grapheme"),J="",se=0;for(let et of A){let tt=E.x+z(J+et);if(J&&tt+Ze>Le)break;J+=et,se=tt}N=J+"\u2026",Ce=k,_e[k][1]=se}if(B?K+=j:g?V=n.getSVG(O,N,te(D({},o),{left:he+q,top:be+K+P+M/2,letterSpacing:o.letterSpacing})):K+=P+M/2,o.textDecorationLine&&(k!==((Qe=S[_+1])==null?void 0:Qe.line)||Ce===k)){let A=_e[k];A&&!A[2]&&(xe+=Me({left:he+A[0],top:be+W*+k,width:A[1],ascender:P+M/2,clipPathId:oe},o),A[2]=1)}if(V)Se+=V+" ";else{let[A,J]=Ne({content:N,filter:ue,id:s,left:he+q,top:be+K,width:Z,height:W,matrix:ee,opacity:ye,image:B,clipPathId:oe,debug:p,shape:!!L,decorationShape:xe},o);we+=A,ge+=J,xe=""}}if(Se){let _="";p&&(_=y("rect",{x:he,y:be,width:le,height:Ie,fill:"transparent",stroke:"#575eff","stroke-width":1,transform:ee||void 0,"clip-path":oe?`url(#${oe})`:void 0}));let E=o.color!=="transparent"&&ye!==0?y("path",{fill:o.color,d:Se,transform:ee||void 0,opacity:ye!==1?ye:void 0,"clip-path":oe?`url(#${oe})`:void 0}):"";L&&(ge=y("path",{d:Se,transform:ee||void 0})),we+=(ue?`${ue}<g filter="url(#satori_s-${s})">`:"")+E+xe+(ue?"</g>":"")+_}return ge&&(o._inheritedBackgroundClipTextPath.value+=ge),we}import Bt from"parse-css-dimension";var Be=Be||{};Be.parse=function(){var t={linearGradient:/^(\-(webkit|o|ms|moz)\-)?(linear\-gradient)/i,repeatingLinearGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-linear\-gradient)/i,radialGradient:/^(\-(webkit|o|ms|moz)\-)?(radial\-gradient)/i,repeatingRadialGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-radial\-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,percentageValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,emValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,angleValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^\#([0-9a-fA-F]+)/,literalColor:/^([a-zA-Z]+)/,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,number:/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/},r="";function e(l){var b=new Error(r+": "+l);throw b.source=r,b}function o(){var l=a();return r.length>0&&e("Invalid input not EOF"),l}function a(){return L(i)}function i(){return n("linear-gradient",t.linearGradient,f)||n("repeating-linear-gradient",t.repeatingLinearGradient,f)||n("radial-gradient",t.radialGradient,u)||n("repeating-radial-gradient",t.repeatingRadialGradient,u)}function n(l,b,T){return s(b,function(X){var ie=T();return ie&&($(t.comma)||e("Missing comma before color stops")),{type:l,orientation:ie,colorStops:L(O)}})}function s(l,b){var T=$(l);if(T){$(t.startCall)||e("Missing (");var X=b(T);return $(t.endCall)||e("Missing )"),X}}function f(){return p()||g()}function p(){return S("directional",t.sideOrCorner,1)}function g(){return S("angular",t.angleValue,1)}function u(){var l,b=m(),T;return b&&(l=[],l.push(b),T=r,$(t.comma)&&(b=m(),b?l.push(b):r=T)),l}function m(){var l=h()||d();if(l)l.at=R();else{var b=c();if(b){l=b;var T=R();T&&(l.at=T)}else{var X=x();X&&(l={type:"default-radial",at:X})}}return l}function h(){var l=S("shape",/^(circle)/i,0);return l&&(l.style=U()||c()),l}function d(){var l=S("shape",/^(ellipse)/i,0);return l&&(l.style=j()||c()),l}function c(){return S("extent-keyword",t.extentKeywords,1)}function R(){if(S("position",/^at/,0)){var l=x();return l||e("Missing positioning value"),l}}function x(){var l=Y();if(l.x||l.y)return{type:"position",value:l}}function Y(){return{x:j(),y:j()}}function L(l){var b=l(),T=[];if(b)for(T.push(b);$(t.comma);)b=l(),b?T.push(b):e("One extra comma");return T}function O(){var l=F();return l||e("Expected color definition"),l.length=j(),l}function F(){return v()||M()||C()||P()}function P(){return S("literal",t.literalColor,0)}function v(){return S("hex",t.hexColor,1)}function C(){return s(t.rgbColor,function(){return{type:"rgb",value:L(W)}})}function M(){return s(t.rgbaColor,function(){return{type:"rgba",value:L(W)}})}function W(){return $(t.number)[1]}function j(){return S("%",t.percentageValue,1)||G()||U()}function G(){return S("position-keyword",t.positionKeywords,1)}function U(){return S("px",t.pixelValue,1)||S("em",t.emValue,1)}function S(l,b,T){var X=$(b);if(X)return{type:l,value:X[T]}}function $(l){var b,T;return T=/^[\n\r\t\s]+/.exec(r),T&&z(T[0].length),b=l.exec(r),b&&z(b[0].length),b}function z(l){r=r.substr(l)}return function(l){return r=l.toString(),o()}}();var Ye=Be;function Yt(t){return t.type==="literal"?t.value:t.type==="hex"?`#${t.value}`:t.type==="rgb"?`rgb(${t.value.join(",")})`:t.type==="rgba"?`rgba(${t.value.join(",")})`:"transparent"}function Xt(t,r){return typeof t=="string"&&t.endsWith("%")?r*parseFloat(t)/100:+t}function ct(t,{x:r,y:e,defaultX:o,defaultY:a}){return(t?t.split(" ").map(i=>{try{let n=new Bt(i);return n.type==="length"||n.type==="number"?n.value:n.value+n.unit}catch{return null}}).filter(i=>i!==null):[o,a]).map((i,n)=>Xt(i,[r,e][n]))}function mt(t,r){let e=[];for(let n of r){let s=Yt(n);if(!e.length&&(e.push({offset:0,color:s}),typeof n.length=="undefined"||n.length.value==="0"))continue;let f=typeof n.length=="undefined"?void 0:n.length.type==="%"?n.length.value/100:n.length.value/t;e.push({offset:f,color:s})}e.length||e.push({offset:0,color:"transparent"});let o=e[e.length-1];o.offset!==1&&(typeof o.offset=="undefined"?o.offset=1:e.push({offset:1,color:o.color}));let a=0,i=1;for(let n=0;n<e.length;n++)if(typeof e[n].offset=="undefined"){for(i<n&&(i=n);typeof e[i].offset=="undefined";)i++;e[n].offset=(e[i].offset-e[a].offset)/(i-a)*(n-a)+e[a].offset}else a=n;return e}function Xe({id:t,width:r,height:e},{image:o,size:a,position:i,repeat:n}){let s=n==="repeat-x"||n==="repeat",f=n==="repeat-y"||n==="repeat",p=ct(a,{x:r,y:e,defaultX:r,defaultY:e}),g=ct(i,{x:r,y:e,defaultX:0,defaultY:0});if(o.startsWith("linear-gradient(")){let u=Ye.parse(o)[0],m,h,d,c;if(u.orientation.type==="directional")[m,h,d,c]={top:[0,1,0,0],bottom:[0,0,0,1],left:[1,0,0,0],right:[0,0,1,0]}[u.orientation.value];else if(u.orientation.type==="angular"){let x=+u.orientation.value/180*Math.PI-Math.PI/2,Y=Math.cos(x),L=Math.sin(x);m=0,h=0,d=Y,c=L,d<0&&(m-=d,d=0),c<0&&(h-=c,c=0)}let R=mt(r,u.colorStops);return[`satori_bi${t}`,`<linearGradient id="satori_bi${t}" x1="${m}" y1="${h}" x2="${d}" y2="${c}">${R.map(x=>`<stop offset="${x.offset*100}%" stop-color="${x.color}"/>`).join("")}</linearGradient>`]}if(o.startsWith("radial-gradient(")){let u=Ye.parse(o)[0],m=u.orientation[0],[h,d]=p,c="circle",R=h/2,x=d/2;if(m.type==="shape"){if(c=m.value,m.at)if(m.at.type==="position")R=m.at.value.x.value,x=m.at.value.y.value;else throw new Error("orientation.at.type not implemented: "+m.at.type)}else throw new Error("orientation.type not implemented: "+m.type);let Y=mt(r,u.colorStops),L=`satori_radial_${t}`,O=`satori_pattern_${t}`,F={},P=Math.max(Math.abs(h-R),Math.abs(R)),v=Math.max(Math.abs(d-x),Math.abs(x));if(c==="circle")F.r=Math.sqrt(P*P+v*v);else if(c==="ellipse"){let W=v!==0?P/v:1;F.ry=Math.sqrt(P*P+v*v*W*W)/W,F.rx=F.ry*W}let C=y("pattern",{id:O,x:g[0],y:g[1],width:s?h:"100%",height:f?d:"100%",patternUnits:"userSpaceOnUse"},y("radialGradient",{id:L},Y.map(W=>y("stop",{offset:W.offset,"stop-color":W.color})).join(""))+y(c,te(D({cx:R,cy:x,width:h,height:d},F),{fill:`url(#${L})`})));return[O,C]}if(o.startsWith("url(")){let u=o.slice(4,-1);return[`satori_bi${t}`,y("pattern",{id:`satori_bi${t}`,patternContentUnits:"userSpaceOnUse",patternUnits:"userSpaceOnUse",x:g[0],y:g[1],width:s?p[0]:"100%",height:f?p[1]:"100%"},y("image",{x:0,y:0,width:p[0],height:p[1],href:u}))]}}function Re(t,r,e){return e<t+r&&(e/2<t&&e/2<r?t=r=e/2:e/2<t?t=e-r:e/2<r&&(r=e-t)),[t,r]}function me({left:t,top:r,width:e,height:o},a){let{borderTopLeftRadius:i,borderTopRightRadius:n,borderBottomLeftRadius:s,borderBottomRightRadius:f}=a;return i=Math.min(i||0,e,o),n=Math.min(n||0,e,o),s=Math.min(s||0,e,o),f=Math.min(f||0,e,o),!i&&!n&&!s&&!f?"":([i,n]=Re(i,n,e),[i,s]=Re(i,s,o),[n,f]=Re(n,f,o),[s,f]=Re(s,f,e),`M${t+i},${r} h${e-i-n} a${n},${n} 0 0 1 ${n},${n} v${o-n-f} a${f},${f} 0 0 1 ${-f},${f} h${f+s-e} a${s},${s} 0 0 1 ${-s},${-s} v${s+i-o} a${i},${i} 0 0 1 ${i},${-i}`)}function He({left:t,top:r,width:e,height:o,path:a,id:i},n){return n.overflow!=="hidden"?"":a?y("clipPath",{id:`satori_cp-${i}`,"clip-path":n._inheritedClipPathId?`url(#${n._inheritedClipPathId})`:void 0},y("path",{x:t,y:r,width:e,height:o,d:a})):y("clipPath",{id:`satori_cp-${i}`,"clip-path":n._inheritedClipPathId?`url(#${n._inheritedClipPathId})`:void 0},y("rect",{x:t,y:r,width:e,height:o}))}function Ue({id:t,left:r,top:e,width:o,height:a,isInheritingTransform:i,debug:n},s){if(s.display==="none")return"";let f="rect",p="transparent",g=0,u="",m="",h=[],d=1,c="";s.backgroundColor&&h.push(s.backgroundColor),s.borderWidth&&(g=s.borderWidth,p=s.borderColor),s.opacity&&(d=+s.opacity),s.transform&&(u=re({left:r,top:e,width:o,height:a},s.transform,i,s.transformOrigin));let R="";if(s.backgroundImage){let v=s.backgroundImage.map((C,M)=>Xe({id:t+"_"+M,width:o,height:a},C)).filter(Boolean);for(let C of v)h.push(`url(#${C[0]})`),m+=C[1],C[2]&&(R+=C[2])}let x=me({left:r,top:e,width:o,height:a},s);x&&(f="path");let Y=He({left:r,top:e,width:o,height:a,path:x,id:t},s),L=s._inheritedClipPathId,O=ne({width:o,height:a,id:t},s);n&&(c=y("rect",{x:r,y:e,width:o,height:a,fill:"transparent",stroke:"#ff5757","stroke-width":1,transform:u||void 0,"clip-path":L?`url(#${L})`:void 0})),h.length||h.push("transparent");let{backgroundClip:F}=s,P=h.map((v,C)=>{if(v==="transparent"&&!(C===h.length-1&&g))return"";let M=C===h.length-1&&g&&F!=="text";return y(f,{x:r,y:e,width:o,height:a,fill:v,stroke:M?p:void 0,"stroke-width":M?g:void 0,d:x||void 0,transform:u||void 0,"clip-path":F==="text"?`url(#satori_bct-${t})`:L?`url(#${L})`:void 0})}).join("");return F==="text"&&g&&(P=y(f,{x:r,y:e,width:o,height:a,fill:"transparent",stroke:p,"stroke-width":g,d:x||void 0,transform:u||void 0,"clip-path":L?`url(#${L})`:void 0})+P),(m?`<defs>${m}</defs>`:"")+Y+(O?`${O}<g filter="url(#satori_s-${t})">`:"")+(d!==1?`<g opacity="${d}">`:"")+(R||P)+(d!==1?"</g>":"")+(O?"</g>":"")+c}function ze({id:t,left:r,top:e,width:o,height:a,src:i,debug:n,isInheritingTransform:s},f){if(f.display==="none")return"";let p="",g=1,u="",m=f.objectFit==="contain"?"xMidYMid":f.objectFit==="cover"?"xMidYMid slice":"none",h=me({left:r,top:e,width:o,height:a},f),d=f._inheritedClipPathId;h&&(p=y("clipPath",{id:`satori_c-${t}`,"clip-path":d?`url(#${d})`:void 0},y("path",{x:r,y:e,width:o,height:a,d:h}))),f.opacity&&(g=+f.opacity);let c=ne({width:o,height:a,id:t},f);return f.transform&&(u=re({left:r,top:e,width:o,height:a},f.transform,s,f.transformOrigin)),c+(c?`<g filter="url(#satori_s-${t})">`:"")+p+y("image",{x:r,y:e,width:o,height:a,href:i,preserveAspectRatio:m,transform:u||void 0,"clip-path":p?`url(#satori_c-${t})`:d?`url(#${d})`:void 0})+(c?"</g>":"")}function*pe(t,r){let e=Q(),{id:o,inheritedStyle:a,parent:i,font:n,debug:s,embedFont:f=!0,graphemeImages:p}=r;if(t===null||typeof t=="undefined")return yield,"";if(!ke(t)||typeof t.type=="function"){let S;if(!ke(t))S=De(String(t),r);else{if(ot(t.type))throw new Error("Class component is not supported.");S=pe(t.type(t.props),r)}S.next();let $=yield;return S.next($).value}let{type:g,props:u}=t,{style:m,children:h}=u,d=e.Node.create();i.insertChild(d,i.getChildCount());let[c,R]=$e(d,g,a,m,u),x=c.transform===a.transform;if(x||(c.transform.__parent=a.transform),c.overflow==="hidden"&&(R._inheritedClipPathId=`satori_cp-${o}`),c.backgroundClip==="text"){let S={value:""};R._inheritedBackgroundClipTextPath=S,c._inheritedBackgroundClipTextPath=S}let Y=typeof h=="undefined"?[]:[].concat(h),L=[],O=0;for(let S of Y){let $=pe(S,{id:o+"-"+O++,parentStyle:c,inheritedStyle:R,isInheritingTransform:!0,parent:d,font:n,embedFont:f,debug:s,graphemeImages:p});$.next(),L.push($)}let[F,P]=yield;c.position==="absolute"&&d.calculateLayout();let{left:v,top:C,width:M,height:W}=d.getComputedLayout();v+=F,C+=P;let j="",G="",U="";g==="img"?G=ze({id:o,left:v,top:C,width:M,height:W,src:u.src,isInheritingTransform:x,debug:s},c):G=Ue({id:o,left:v,top:C,width:M,height:W,isInheritingTransform:x,debug:s},c);for(let S of L)j+=S.next([v,C]).value;return c._inheritedBackgroundClipTextPath&&(U+=y("clipPath",{id:`satori_bct-${o}`,"clip-path":c._inheritedClipPathId?`url(#${c._inheritedClipPathId})`:void 0},c._inheritedBackgroundClipTextPath.value)),U+G+j}import Ht from"@shuding/opentype.js";var Te=class{constructor(r){this.fonts=new Map;for(let e of r){let o=e.data,a=Ht.parse("buffer"in o?o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength):o,{lowMemory:!0});this.defaultFont||(this.defaultFont=a),this.fonts.has(e.name)||this.fonts.set(e.name,[]),this.fonts.get(e.name).push([a,e.weight,e.style])}}get({name:r,weight:e,style:o}){if(!this.fonts.has(r))return this.defaultFont;e==="normal"&&(e=400),e==="bold"&&(e=700);let a=[...this.fonts.get(r)];return a.sort(([i,n,s],[f,p,g])=>{if(n!==p)return n?!p||n===e?-1:p===e?1:e===400&&n===500||e===500&&n===400?-1:e===400&&p===500||e===500&&p===400?1:e<400?n<e&&p<e?p-n:n<e?-1:p<e?1:n-p:e<n&&e<p?n-p:e<n?-1:e<p?1:p-n:1;if(s!==g){if(s===o)return-1;if(g===o)return 1}return-1}),a[0][0]}getFont({fontFamily:r,fontWeight:e=400,fontStyle:o="normal"}){return this.get({name:r,weight:e,style:o})}measure(r,e,{fontSize:o,letterSpacing:a=0}){return r.getAdvanceWidth(e,o,{letterSpacing:a/o})}getSVG(r,e,{fontSize:o,top:a,left:i,letterSpacing:n=0}){return r.getPath(e,i,a,o,{letterSpacing:n/o}).toPathData(1)}};function Ve({width:t,height:r,content:e}){return y("svg",{width:t,height:r,viewBox:`0 0 ${t} ${r}`,xmlns:"http://www.w3.org/2000/svg"},e)}var Je=new WeakMap;function pt(t,r){let e=Q();if(!e)throw new Error("Satori is not initialized.");let o;Je.has(r.fonts)?o=Je.get(r.fonts):Je.set(r.fonts,o=new Te(r.fonts));let a=e.Node.create();a.setWidth(r.width),a.setHeight(r.height),a.setFlexDirection(e.FLEX_DIRECTION_ROW),a.setFlexWrap(e.WRAP_WRAP),a.setAlignContent(e.ALIGN_AUTO),a.setAlignItems(e.ALIGN_FLEX_START),a.setJustifyContent(e.JUSTIFY_FLEX_START),a.setOverflow(e.OVERFLOW_HIDDEN);let i=pe(t,{id:"id",parentStyle:{},inheritedStyle:{fontSize:16,fontWeight:"normal",fontFamily:"serif",fontStyle:"normal",lineHeight:1.2,color:"black",opacity:1,whiteSpace:"normal",_viewportWidth:r.width,_viewportHeight:r.height},parent:a,font:o,embedFont:r.embedFont,debug:r.debug,graphemeImages:r.graphemeImages});i.next(),a.calculateLayout(r.width,r.height,e.DIRECTION_LTR);let n=i.next([0,0]).value;return a.freeRecursive(),Ve({width:r.width,height:r.height,content:n})}export{pt as default,wt as init};
1
+ var Ae=Object.defineProperty,Oe=Object.defineProperties;var Fe=Object.getOwnPropertyDescriptors;var se=Object.getOwnPropertySymbols;var $e=Object.prototype.hasOwnProperty,Pe=Object.prototype.propertyIsEnumerable;var le=(d,u,e)=>u in d?Ae(d,u,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[u]=e,M=(d,u)=>{for(var e in u||(u={}))$e.call(u,e)&&le(d,e,u[e]);if(se)for(var e of se(u))Pe.call(u,e)&&le(d,e,u[e]);return d},id=(d,u)=>Oe(d,Fe(u));import{guessLanguage as gu}from"guesslanguage";import*as We from"yoga-layout-prebuilt";var pe=We;var Pd;Pd=pe.default;function Ne(d){Pd=d}function ed(){return Pd}import{LineBreaker as Ge}from"css-line-break";import{splitGraphemes as Me}from"text-segmentation";function Wd(d){let u=typeof d;return!(u==="number"||u==="bigint"||u==="string"||u==="boolean")}function me(d){return/^class\s/.test(Function.prototype.toString.call(d))}function gd(d,u){return[d[0]*u[0]+d[2]*u[1],d[1]*u[0]+d[3]*u[1],d[0]*u[2]+d[2]*u[3],d[1]*u[2]+d[3]*u[3],d[0]*u[4]+d[2]*u[5]+d[4],d[1]*u[4]+d[3]*u[5]+d[5]]}function q(d,u,e){let n=u[d];return typeof n=="undefined"?e:n}var ge=void 0,Nd=typeof Intl!="undefined"&&"Segmenter"in Intl&&process.env.NODE_ENV!=="test",De=Nd?new Intl.Segmenter(ge,{granularity:"word"}):null,Be=Nd?new Intl.Segmenter(ge,{granularity:"grapheme"}):null,yd=[32,160,4961,65792,65793,4153,4241,10].map(d=>String.fromCodePoint(d)),Ye=d=>{let u=Ge(d,{lineBreak:"strict",wordBreak:"normal"}),e=[],n;for(;!(n=u.next()).done;)if(n.value){let f=n.value.slice(),t="";for(let r=0;r<f.length;r++){let i=f[r];yd.includes(i)?(t.length&&e.push(t),e.push(i),t=""):t+=i}t.length&&e.push(t)}return e};function od(d,u){return Nd?u==="word"?[...De.segment(d)].map(e=>e.segment):[...Be.segment(d)].map(e=>e.segment):u==="word"?Ye(d):Me(d)}function x(d,u,e){let n="";for(let[f,t]of Object.entries(u))typeof t!="undefined"&&(n+=` ${f}="${t}"`);return e?`<${d}${n}>${e}</${d}>`:`<${d}${n}/>`}var be={p:{display:"block",marginTop:"1em",marginBottom:"1em"},div:{display:"block"},blockquote:{display:"block",marginTop:"1em",marginBottom:"1em",marginLeft:40,marginRight:40},center:{display:"block",textAlign:"center"},hr:{display:"block",marginTop:"0.5em",marginBottom:"0.5em",marginLeft:"auto",marginRight:"auto",borderWidth:1,borderStyle:"inset"},h1:{display:"block",fontSize:"2em",marginTop:"0.67em",marginBottom:"0.67em",marginLeft:0,marginRight:0,fontWeight:"bold"},h2:{display:"block",fontSize:"1.5em",marginTop:"0.83em",marginBottom:"0.83em",marginLeft:0,marginRight:0,fontWeight:"bold"},h3:{display:"block",fontSize:"1.17em",marginTop:"1em",marginBottom:"1em",marginLeft:0,marginRight:0,fontWeight:"bold"},h4:{display:"block",marginTop:"1.33em",marginBottom:"1.33em",marginLeft:0,marginRight:0,fontWeight:"bold"},h5:{display:"block",fontSize:"0.83em",marginTop:"1.67em",marginBottom:"1.67em",marginLeft:0,marginRight:0,fontWeight:"bold"},h6:{display:"block",fontSize:"0.67em",marginTop:"2.33em",marginBottom:"2.33em",marginLeft:0,marginRight:0,fontWeight:"bold"},u:{textDecoration:"underline"},strong:{fontWeight:"bold"},b:{fontWeight:"bold"},i:{fontStyle:"italic"},em:{fontStyle:"italic"},code:{fontFamily:"monospace"},kbd:{fontFamily:"monospace"},pre:{display:"block",fontFamily:"monospace",whiteSpace:"pre",marginTop:"1em",marginBottom:"1em"},mark:{backgroundColor:"yellow",color:"black"},big:{fontSize:"larger"},small:{fontSize:"smaller"},s:{textDecoration:"line-through"}};var He=new Set(["color","font","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","textAlign","textTransform","textShadowOffset","textShadowColor","textShadowRadius","textDecorationLine","textDecorationStyle","textDecorationColor","whiteSpace","transform","wordBreak","opacity","filter","_viewportWidth","_viewportHeight","_inheritedClipPathId","_inheritedBackgroundClipTextPath"]);function Gd(d){let u={};for(let e in d)He.has(e)&&(u[e]=d[e]);return u}import{getPropertyName as tu,getStylesForProperty as ru}from"css-to-react-native";import{parseElementStyle as nu}from"css-background-parser";var xd=(d,u)=>()=>(u||d((u={exports:{}}).exports,u),u.exports),Xe=xd((d,u)=>{u.exports=["em","ex","ch","rem","vh","vw","vmin","vmax","px","mm","cm","in","pt","pc","mozmm"]}),Ue=xd((d,u)=>{u.exports=["deg","grad","rad","turn"]}),ze=xd((d,u)=>{u.exports=["dpi","dpcm","dppx"]}),je=xd((d,u)=>{u.exports=["Hz","kHz"]}),Ve=xd((d,u)=>{u.exports=["s","ms"]}),Je=Xe(),he=Ue(),ye=ze(),xe=je(),Ee=Ve();function Dd(d){if(/\.\D?$/.test(d))throw new Error("The dot should be followed by a number");if(/^[+-]{2}/.test(d))throw new Error("Only one leading +/- is allowed");if(qe(d)>1)throw new Error("Only one dot is allowed");if(/%$/.test(d)){this.type="percentage",this.value=Md(d),this.unit="%";return}var u=Ze(d);if(!u){this.type="number",this.value=Md(d);return}this.type=du(u),this.value=Md(d.substr(0,d.length-u.length)),this.unit=u}Dd.prototype.valueOf=function(){return this.value};Dd.prototype.toString=function(){return this.value+(this.unit||"")};function ad(d){return new Dd(d)}function qe(d){var u=d.match(/\./g);return u?u.length:0}function Md(d){var u=parseFloat(d);if(isNaN(u))throw new Error("Invalid number: "+d);return u}var Ke=[].concat(he,xe,Je,ye,Ee);function Ze(d){var u=d.match(/\D+$/),e=u&&u[0];if(e&&Ke.indexOf(e)===-1)throw new Error("Invalid unit: "+e);return e}var Qe=Object.assign(Ld(he,"angle"),Ld(xe,"frequency"),Ld(ye,"resolution"),Ld(Ee,"time"));function Ld(d,u){return Object.fromEntries(d.map(e=>[e,u]))}function du(d){return Qe[d]||"length"}import eu from"postcss-value-parser";function uu(d,u){try{let e=new ad(d);switch(e.unit){case"px":return{absolute:e.value};case"em":return{absolute:e.value*u};case"rem":return{absolute:e.value*16};case"%":return{relative:e.value};default:return{}}}catch{return{}}}function Bd(d,u,e){switch(d){case"top":return{yRelative:0};case"left":return{xRelative:0};case"right":return{xRelative:100};case"bottom":return{yRelative:100};case"center":return{};default:let n=uu(d,u);return n.absolute?{[e?"xAbsolute":"yAbsolute"]:n.absolute}:n.relative?{[e?"xRelative":"yRelative"]:n.relative}:{}}}function Yd(d,u){if(typeof d=="number")return{xAbsolute:d};let e;try{e=eu(d).nodes.filter(n=>n.type==="word").map(n=>n.value)}catch{return{}}return e.length===1?Bd(e[0],u,!0):e.length===2?((e[0]==="top"||e[0]==="bottom"||e[1]==="left"||e[1]==="right")&&e.reverse(),M(M({},Bd(e[0],u,!0)),Bd(e[1],u,!1))):{}}var fu=new Set(["flex","flexGrow","flexShrink","flexBasis","fontWeight","lineHeight","opacity","scale","scaleX","scaleY"]),iu=new Set(["lineHeight"]),_e=[1,0,0,1,0,0];function ou(d,u,e,n){return d==="border"&&!e.includes(u.borderColor)?u.borderColor=n:d==="textDecoration"&&!e.includes(u.textDecorationColor)&&(u.textDecorationColor=n),u}function Se(d,u){return typeof u=="number"?fu.has(d)?iu.has(d)?u:String(u):u+"px":u}function au(d,u){return d==="lineHeight"?{lineHeight:Se(d,u)}:d==="fontFamily"?{fontFamily:u.split(",").map(e=>e.trim().replace(/(^['"])|(['"]$)/g,"").toLocaleLowerCase())}:null}function Hd(d,u,e,{percentage:n}={percentage:!1}){if(typeof d=="number")return d;try{let f=new ad(d);if(f.type==="length")switch(f.unit){case"em":return f.value*u;case"rem":return f.value*16;case"vw":return~~(f.value*e._viewportWidth/100);case"vh":return~~(f.value*e._viewportHeight/100);default:return f.value}else if(f.type==="angle")switch(f.unit){case"deg":return f.value;case"rad":return f.value*180/Math.PI;default:return f.value}else if(f.type==="percentage"&&n)return f.value/100*u}catch{}}function kd(d,u){let e={};for(let f in d){if(f.startsWith("_")){e[f]=d[f];continue}let t=tu(f);Object.assign(e,au(t,d[f])||ou(t,ru(t,Se(t,d[f]),!0),d[f],d.color||u.color))}if(e.backgroundImage){let{backgrounds:f}=nu(e);e.backgroundImage=f}let n=e.fontSize||u.fontSize;if(typeof n=="string")try{let f=new ad(n);switch(f.unit){case"em":n=f.value*u.fontSize;break;case"rem":n=f.value*16;break}}catch{n=16}typeof e.fontSize!="undefined"&&(e.fontSize=n),e.transformOrigin&&(e.transformOrigin=Yd(e.transformOrigin,n));for(let f in e){let t=e[f];if(f==="lineHeight")typeof t=="string"&&(t=e[f]=Hd(t,n,u,{percentage:!0})/n);else if(typeof t=="string"){let r=Hd(t,n,u);typeof r!="undefined"&&(e[f]=r),t=e[f]}if(f==="opacity"&&(t=e[f]=t*u.opacity),f==="transform"){let r=[..._e],i=t;for(let a of i){let m=Object.keys(a)[0],g=a[m],l=typeof g=="string"?Hd(g,n,u):g,s=[..._e];switch(m){case"translateX":s[4]=l;break;case"translateY":s[5]=l;break;case"scale":s[0]=l,s[3]=l;break;case"scaleX":s[0]=l;break;case"scaleY":s[3]=l;break;case"rotate":let b=l*Math.PI/180,o=Math.cos(b),c=Math.sin(b);s[0]=o,s[1]=c,s[2]=-c,s[3]=o;break;case"skewX":s[2]=Math.tan(l*Math.PI/180);break;case"skewY":s[1]=Math.tan(l*Math.PI/180);break}r=gd(s,r)}e.transform=r}}return e}function Xd(d,u,e,n,f){let t=ed(),r=M(M(M({},e),kd(be[u],e)),kd(n,e));if(u==="img"){let i=parseInt(f.width),m=parseInt(f.height)/i;r.width||(r.width=i),r.height||(r.height=m*r.width)}return d.setDisplay(q(r.display,{flex:t.DISPLAY_FLEX,none:t.DISPLAY_NONE},t.DISPLAY_FLEX)),d.setAlignContent(q(r.alignContent,{stretch:t.ALIGN_STRETCH,center:t.ALIGN_CENTER,"flex-start":t.ALIGN_FLEX_START,"flex-end":t.ALIGN_FLEX_END,"space-between":t.ALIGN_SPACE_BETWEEN,"space-around":t.ALIGN_SPACE_AROUND,baseline:t.ALIGN_BASELINE,normal:t.ALIGN_AUTO},t.ALIGN_AUTO)),d.setAlignItems(q(r.alignItems,{stretch:t.ALIGN_STRETCH,center:t.ALIGN_CENTER,"flex-start":t.ALIGN_FLEX_START,"flex-end":t.ALIGN_FLEX_END,baseline:t.ALIGN_BASELINE,normal:t.ALIGN_AUTO},t.ALIGN_FLEX_START)),d.setAlignSelf(q(r.alignSelf,{stretch:t.ALIGN_STRETCH,center:t.ALIGN_CENTER,"flex-start":t.ALIGN_FLEX_START,"flex-end":t.ALIGN_FLEX_END,baseline:t.ALIGN_BASELINE,normal:t.ALIGN_AUTO},t.ALIGN_AUTO)),d.setJustifyContent(q(r.justifyContent,{center:t.JUSTIFY_CENTER,"flex-start":t.JUSTIFY_FLEX_START,"flex-end":t.JUSTIFY_FLEX_END,"space-between":t.JUSTIFY_SPACE_BETWEEN,"space-around":t.JUSTIFY_SPACE_AROUND},t.JUSTIFY_FLEX_START)),d.setFlexDirection(q(r.flexDirection,{row:t.FLEX_DIRECTION_ROW,column:t.FLEX_DIRECTION_COLUMN,"row-reverse":t.FLEX_DIRECTION_ROW_REVERSE,"column-reverse":t.FLEX_DIRECTION_COLUMN_REVERSE},t.FLEX_DIRECTION_ROW)),d.setFlexWrap(q(r.flexWrap,{wrap:t.WRAP_WRAP,nowrap:t.WRAP_NO_WRAP,"wrap-reverse":t.WRAP_WRAP_REVERSE},t.WRAP_WRAP)),typeof r.flexBasis!="undefined"&&d.setFlexBasis(r.flexBasis),d.setFlexGrow(typeof r.flexGrow=="undefined"?0:r.flexGrow),d.setFlexShrink(typeof r.flexShrink=="undefined"?0:r.flexShrink),typeof r.maxHeight!="undefined"&&d.setMaxHeight(r.maxHeight),typeof r.maxWidth!="undefined"&&d.setMaxWidth(r.maxWidth),typeof r.minHeight!="undefined"&&d.setMinHeight(r.minHeight),typeof r.minWidth!="undefined"&&d.setMinWidth(r.minWidth),d.setOverflow(q(r.overflow,{visible:t.OVERFLOW_VISIBLE,hidden:t.OVERFLOW_HIDDEN},t.OVERFLOW_VISIBLE)),d.setMargin(t.EDGE_TOP,r.marginTop||0),d.setMargin(t.EDGE_BOTTOM,r.marginBottom||0),d.setMargin(t.EDGE_LEFT,r.marginLeft||0),d.setMargin(t.EDGE_RIGHT,r.marginRight||0),d.setBorder(t.EDGE_TOP,r.borderWidth||0),d.setBorder(t.EDGE_BOTTOM,r.borderWidth||0),d.setBorder(t.EDGE_LEFT,r.borderWidth||0),d.setBorder(t.EDGE_RIGHT,r.borderWidth||0),d.setPadding(t.EDGE_TOP,r.paddingTop||0),d.setPadding(t.EDGE_BOTTOM,r.paddingBottom||0),d.setPadding(t.EDGE_LEFT,r.paddingLeft||0),d.setPadding(t.EDGE_RIGHT,r.paddingRight||0),d.setPositionType(q(r.position,{absolute:t.POSITION_TYPE_ABSOLUTE,relative:t.POSITION_TYPE_RELATIVE},t.POSITION_TYPE_RELATIVE)),typeof r.top!="undefined"&&d.setPosition(t.EDGE_TOP,r.top),typeof r.bottom!="undefined"&&d.setPosition(t.EDGE_BOTTOM,r.bottom),typeof r.left!="undefined"&&d.setPosition(t.EDGE_LEFT,r.left),typeof r.right!="undefined"&&d.setPosition(t.EDGE_RIGHT,r.right),typeof r.height!="undefined"?d.setHeight(r.height):d.setHeightAuto(),typeof r.width!="undefined"?d.setWidth(r.width):d.setWidthAuto(),[r,Gd(r)]}function cd({left:d,top:u,width:e,height:n},f,t,r){var a,m,g,l;let i;if(t)i=f;else{let s=(m=r==null?void 0:r.xAbsolute)!=null?m:((a=r==null?void 0:r.xRelative)!=null?a:50)*e/100,b=(l=r==null?void 0:r.yAbsolute)!=null?l:((g=r==null?void 0:r.yRelative)!=null?g:50)*n/100,o=d+s,c=u+b;i=gd([1,0,0,1,o,c],gd(f,[1,0,0,1,-o,-c])),f.__parent&&(i=gd(f.__parent,i)),f.splice(0,6,...i)}return`matrix(${i.map(s=>s.toFixed(2)).join(",")})`}function we({left:d,top:u,width:e,height:n,isInheritingTransform:f},t){let r="",i=1;return t.transform&&(r=cd({left:d,top:u,width:e,height:n},t.transform,f,t.transformOrigin)),t.opacity&&(i=+t.opacity),{matrix:r,opacity:i}}function Ud({id:d,content:u,filter:e,left:n,top:f,width:t,height:r,matrix:i,opacity:a,image:m,clipPathId:g,debug:l,shape:s,decorationShape:b},o){let c="";if(l&&(c=x("rect",{x:n,y:f-r,width:t,height:r,fill:"transparent",stroke:"#575eff","stroke-width":1,transform:i||void 0,"clip-path":g?`url(#${g})`:void 0})),m){let y={href:m,x:n,y:f,width:t,height:r,transform:i||void 0,"clip-path":g?`url(#${g})`:void 0,style:o.filter?`filter:${o.filter}`:void 0};return[(e?`${e}<g filter="url(#satori_s-${d})">`:"")+x("image",id(M({},y),{opacity:a!==1?a:void 0}))+(b||"")+(e?"</g>":"")+c,""]}let h={x:n,y:f,width:t,height:r,"font-weight":o.fontWeight,"font-style":o.fontStyle,"font-size":o.fontSize,"font-family":o.fontFamily,"letter-spacing":o.letterSpacing||void 0,transform:i||void 0,"clip-path":g?`url(#${g})`:void 0,style:o.filter?`filter:${o.filter}`:void 0};return[(e?`${e}<g filter="url(#satori_s-${d})">`:"")+x("text",id(M({},h),{fill:o.color,opacity:a!==1?a:void 0}),u)+(b||"")+(e?"</g>":"")+c,s?x("text",h,u):""]}function sd({id:d,width:u,height:e},n){if(!n.shadowColor||!n.shadowOffset||typeof n.shadowRadius=="undefined")return"";let f=n.shadowRadius*n.shadowRadius/4,t=Math.min(n.shadowOffset.width-f,0),r=Math.max(n.shadowOffset.width+f+u,u),i=Math.min(n.shadowOffset.height-f,0),a=Math.max(n.shadowOffset.height+f+e,e);return`<defs><filter id="satori_s-${d}" x="${t/u*100}%" y="${i/e*100}%" width="${(r-t)/u*100}%" height="${(a-i)/e*100}%"><feDropShadow dx="${n.shadowOffset.width}" dy="${n.shadowOffset.height}" stdDeviation="${n.shadowRadius/2}" flood-color="${n.shadowColor}" flood-opacity="1"/></filter></defs>`}function zd({width:d,left:u,top:e,ascender:n,clipPathId:f},t){let{textDecorationColor:r,textDecorationStyle:i,textDecorationLine:a,fontSize:m}=t;if(!a||a==="none")return"";let g=Math.max(1,m*.1),l=a==="line-through"?e+n*.5:a==="underline"?e+n*1.1:e,s=i==="dashed"?`${g*1.2} ${g*2}`:i==="dotted"?`0 ${g*2}`:void 0;return x("line",{x1:u,y1:l,x2:u+d,y2:l,stroke:r,"stroke-width":g,"stroke-dasharray":s,"stroke-linecap":i==="dotted"?"round":"square","clip-path":f?`url(#${f})`:void 0})}var jd=void 0;function*Vd(d,u){var oe;let e=ed(),{parentStyle:n,inheritedStyle:f,parent:t,font:r,id:i,isInheritingTransform:a,debug:m,embedFont:g,graphemeImages:l,canLoadAdditionalAssets:s}=u;n.textTransform==="uppercase"?d=d.toLocaleUpperCase(jd):n.textTransform==="lowercase"?d=d.toLocaleLowerCase(jd):n.textTransform==="capitalize"&&(d=od(d,"word").map(A=>od(A,"grapheme").map((O,F)=>F===0?O.toLocaleUpperCase(jd):O).join("")).join(""));let b=q(n.wordBreak,{normal:"word","break-all":"grapheme","break-word":"grapheme","keep-all":"word"},"word"),o=od(d,b),c=e.Node.create();c.setAlignItems(e.ALIGN_BASELINE),n.textAlign==="left"?c.setJustifyContent(e.JUSTIFY_FLEX_START):n.textAlign==="center"?c.setJustifyContent(e.JUSTIFY_CENTER):n.textAlign==="right"?c.setJustifyContent(e.JUSTIFY_FLEX_END):n.textAlign==="justify"&&c.setJustifyContent(e.JUSTIFY_SPACE_BETWEEN),t.insertChild(c,t.getChildCount());let{textAlign:h,textOverflow:y,whiteSpace:_,lineHeight:w,filter:G,_inheritedBackgroundClipTextPath:W}=n,N=n.fontSize,S=r.getEngine(N,w,n),H=s?o.filter(A=>!S.check(A)):[];yield H,H.length&&(S=r.getEngine(N,w,n));let T=[],k=[],X=[],K=[],Q=new Map,R=A=>{let O=0;for(let F of A){if(Q.has(F)){O+=Q.get(F);continue}let Y=S.measure(F,n);Q.set(F,Y),O+=Y}return O},$=0,v=[],p=0;for(let A of o){let O=!1,F=l&&l[A];_==="pre"?O=A[0]===`
2
+ `:_!=="nowrap"&&(F||yd.includes(A[0]))&&(O=!0),O?(_==="nowrap"?p+=R(v)+n.fontSize:($=Math.max($,R(v)),F&&($=Math.max($,n.fontSize))),v=[]):(!yd.includes(A[0])||!v.length)&&v.push(A===`
3
+ `?" ":A)}$=Math.max($,R(v)+p);let E=t.getMinWidth(),I=t.getMaxWidth(),Z=t.getWidth();isNaN(Z.value)&&(isNaN(E.value)||E.unit===1&&E.value>$)&&(isNaN(I.value)||I.unit===1&&($=Math.min($,I.value)),t.setMinWidth($)),typeof n.flexShrink=="undefined"&&t.setFlexShrink(1);let bd=_==="pre-wrap"||_==="pre";c.setMeasureFunc(A=>{let O=0,F="",Y=0,U=0,z=0,j=-1,rd=0,P=0,nd=0;T=[],X=[0];for(let td=0;td<o.length;td++){let D=o[td];if(!bd&&yd.includes(D[0]))F||(F=" "),Y=R([F]),K[td]=null;else{let fd=bd&&D===`
4
+ `,V=fd?0:l&&l[D]?n.fontSize:R([D]);U||(F="",Y=0);let B=Y||",.!?:-@)>]}%#".indexOf(D[0])<0,J=!U||!!Y;if(fd||td&&B&&U+Y+V>A&&_!=="nowrap"&&_!=="pre")T.push(U),k.push(nd),O++,rd+=P,U=V,P=V?S.glyphHeight(D):0,nd=V?S.baseline(D):0,X.push(1),j=-1,fd||(z=Math.max(z,A));else{U+=Y+V;let md=S.glyphHeight(D);md>P&&(P=md,nd=S.baseline(D)),J&&X[X.length-1]++}F="",Y=0,J&&j++,z=Math.max(z,U),K[td]={y:rd,x:U-V,width:V,line:O,lineIndex:j}}}return U&&(O++,T.push(U),k.push(nd),rd+=P),{width:z,height:rd}});let[Le,ke]=yield,Od="",Sd="",ud=f._inheritedClipPathId,{left:te,top:re,width:wd,height:ne}=c.getComputedLayout(),Fd=t.getComputedWidth()-t.getComputedPadding(e.EDGE_LEFT)-t.getComputedPadding(e.EDGE_RIGHT)-t.getComputedBorder(e.EDGE_LEFT)-t.getComputedBorder(e.EDGE_RIGHT),ld=Le+te,pd=ke+re,{matrix:dd,opacity:Td}=we({left:te,top:re,width:wd,height:ne,isInheritingTransform:a},n),hd="";n.textShadowOffset&&(hd=sd({width:wd,height:ne,id:i},{shadowColor:n.textShadowColor,shadowOffset:n.textShadowOffset,shadowRadius:n.textShadowRadius}));let Rd="",vd="",fe="",$d=-1,ie=y==="ellipsis"?R(["\u2026"]):0,Ie=y==="ellipsis"?R([" "]):0,Cd={};for(let A=0;A<o.length;A++){if(!K[A])continue;let O=K[A],F=o[A],Y=null,U=l?l[F]:null,z=O.y,j=O.x,rd=O.width,P=O.line;if(P===$d)continue;let nd=!1;if(T.length>1){let B=wd-T[P];if(h==="right"||h==="end")j+=B;else if(h==="center")j+=B/2;else if(h==="justify"&&P<T.length-1){let J=X[P];j+=(J>1?B/(J-1):0)*O.lineIndex,nd=!0}}if(Cd[P]||(Cd[P]=[j,nd?wd:T[P]]),y==="ellipsis"&&T[P]>Fd&&O.x+rd+ie+Ie>Fd){let B=od(F,"grapheme"),J="",md=0;for(let ae of B){let ce=O.x+R([J+ae]);if(J&&ce+ie>Fd)break;J+=ae,md=ce}F=J+"\u2026",$d=P,Cd[P][1]=md}let td=k[P],D=S.baseline(F),fd=S.glyphHeight(F),V=td-D;if(U?z+=0:g?(Y=S.getSVG(F,id(M({},n),{left:ld+j,top:pd+z+D+V,letterSpacing:n.letterSpacing})),m&&(fe+=x("rect",{x:ld+j,y:pd+z+V,width:O.width,height:fd,fill:"transparent",stroke:"#575eff","stroke-width":1,transform:dd||void 0,"clip-path":ud?`url(#${ud})`:void 0})+x("line",{x1:ld+j,x2:ld+j+O.width,y1:pd+z+V+D,y2:pd+z+V+D,stroke:"#14c000","stroke-width":1,transform:dd||void 0,"clip-path":ud?`url(#${ud})`:void 0}))):z+=D+V,n.textDecorationLine&&(P!==((oe=K[A+1])==null?void 0:oe.line)||$d===P)){let B=Cd[P];B&&!B[2]&&(Rd+=zd({left:ld+B[0],top:pd+fd*+P,width:B[1],ascender:S.baseline(F),clipPathId:ud},n),B[2]=1)}if(Y!==null)vd+=Y+" ";else{let[B,J]=Ud({content:F,filter:hd,id:i,left:ld+j,top:pd+z,width:rd,height:fd,matrix:dd,opacity:Td,image:U,clipPathId:ud,debug:m,shape:!!W,decorationShape:Rd},n);Od+=B,Sd+=J,Rd=""}}if(vd){let A=n.color!=="transparent"&&Td!==0?x("path",{fill:n.color,d:vd,transform:dd||void 0,opacity:Td!==1?Td:void 0,"clip-path":ud?`url(#${ud})`:void 0,style:G?`filter:${G}`:void 0}):"";W&&(Sd=x("path",{d:vd,transform:dd||void 0})),Od+=(hd?`${hd}<g filter="url(#satori_s-${i})">`:"")+A+Rd+(hd?"</g>":"")+fe}return Sd&&(n._inheritedBackgroundClipTextPath.value+=Sd),Od}var Jd=Jd||{};Jd.parse=function(){var d={linearGradient:/^(\-(webkit|o|ms|moz)\-)?(linear\-gradient)/i,repeatingLinearGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-linear\-gradient)/i,radialGradient:/^(\-(webkit|o|ms|moz)\-)?(radial\-gradient)/i,repeatingRadialGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-radial\-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,extentKeywords:/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,percentageValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,emValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,angleValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^\#([0-9a-fA-F]+)/,literalColor:/^([a-zA-Z]+)/,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,number:/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/},u="";function e(p){var E=new Error(u+": "+p);throw E.source=u,E}function n(){var p=f();return u.length>0&&e("Invalid input not EOF"),p}function f(){return w(t)}function t(){return r("linear-gradient",d.linearGradient,a)||r("repeating-linear-gradient",d.repeatingLinearGradient,a)||r("radial-gradient",d.radialGradient,l)||r("repeating-radial-gradient",d.repeatingRadialGradient,l)}function r(p,E,I){return i(E,function(Z){var bd=I();return bd&&($(d.comma)||e("Missing comma before color stops")),{type:p,orientation:bd,colorStops:w(G)}})}function i(p,E){var I=$(p);if(I){$(d.startCall)||e("Missing (");var Z=E(I);return $(d.endCall)||e("Missing )"),Z}}function a(){return m()||g()}function m(){return R("directional",d.sideOrCorner,1)}function g(){return R("angular",d.angleValue,1)}function l(){var p,E=s(),I;return E&&(p=[],p.push(E),I=u,$(d.comma)&&(E=s(),E?p.push(E):u=I)),p}function s(){var p=b()||o();if(p)p.at=h();else{var E=c();if(E){p=E;var I=h();I&&(p.at=I)}else{var Z=y();Z&&(p={type:"default-radial",at:Z})}}return p}function b(){var p=R("shape",/^(circle)/i,0);return p&&(p.style=Q()||c()),p}function o(){var p=R("shape",/^(ellipse)/i,0);return p&&(p.style=X()||c()),p}function c(){return R("extent-keyword",d.extentKeywords,1)}function h(){if(R("position",/^at/,0)){var p=y();return p||e("Missing positioning value"),p}}function y(){var p=_();if(p.x||p.y)return{type:"position",value:p}}function _(){return{x:X(),y:X()}}function w(p){var E=p(),I=[];if(E)for(I.push(E);$(d.comma);)E=p(),E?I.push(E):e("One extra comma");return I}function G(){var p=W();return p||e("Expected color definition"),p.length=X(),p}function W(){return S()||T()||H()||N()}function N(){return R("literal",d.literalColor,0)}function S(){return R("hex",d.hexColor,1)}function H(){return i(d.rgbColor,function(){return{type:"rgb",value:w(k)}})}function T(){return i(d.rgbaColor,function(){return{type:"rgba",value:w(k)}})}function k(){return $(d.number)[1]}function X(){return R("%",d.percentageValue,1)||K()||Q()}function K(){return R("position-keyword",d.positionKeywords,1)}function Q(){return R("px",d.pixelValue,1)||R("em",d.emValue,1)}function R(p,E,I){var Z=$(E);if(Z)return{type:p,value:Z[I]}}function $(p){var E,I;return I=/^[\n\r\t\s]+/.exec(u),I&&v(I[0].length),E=p.exec(u),E&&v(E[0].length),E}function v(p){u=u.substr(p)}return function(p){return u=p.toString(),n()}}();var qd=Jd;function cu(d){return d.type==="literal"?d.value:d.type==="hex"?`#${d.value}`:d.type==="rgb"?`rgb(${d.value.join(",")})`:d.type==="rgba"?`rgba(${d.value.join(",")})`:"transparent"}function su(d,u){return typeof d=="string"&&d.endsWith("%")?u*parseFloat(d)/100:+d}function Te(d,{x:u,y:e,defaultX:n,defaultY:f}){return(d?d.split(" ").map(t=>{try{let r=new ad(t);return r.type==="length"||r.type==="number"?r.value:r.value+r.unit}catch{return null}}).filter(t=>t!==null):[n,f]).map((t,r)=>su(t,[u,e][r]))}function Re(d,u){let e=[];for(let r of u){let i=cu(r);if(!e.length&&(e.push({offset:0,color:i}),typeof r.length=="undefined"||r.length.value==="0"))continue;let a=typeof r.length=="undefined"?void 0:r.length.type==="%"?r.length.value/100:r.length.value/d;e.push({offset:a,color:i})}e.length||e.push({offset:0,color:"transparent"});let n=e[e.length-1];n.offset!==1&&(typeof n.offset=="undefined"?n.offset=1:e.push({offset:1,color:n.color}));let f=0,t=1;for(let r=0;r<e.length;r++)if(typeof e[r].offset=="undefined"){for(t<r&&(t=r);typeof e[t].offset=="undefined";)t++;e[r].offset=(e[t].offset-e[f].offset)/(t-f)*(r-f)+e[f].offset}else f=r;return e}function Kd({id:d,width:u,height:e},{image:n,size:f,position:t,repeat:r}){r=r||"repeat";let i=r==="repeat-x"||r==="repeat",a=r==="repeat-y"||r==="repeat",m=Te(f,{x:u,y:e,defaultX:u,defaultY:e}),g=Te(t,{x:u,y:e,defaultX:0,defaultY:0});if(n.startsWith("linear-gradient(")){let l=qd.parse(n)[0],s,b,o,c;if(l.orientation.type==="directional")[s,b,o,c]={top:[0,1,0,0],bottom:[0,0,0,1],left:[1,0,0,0],right:[0,0,1,0]}[l.orientation.value];else if(l.orientation.type==="angular"){let y=+l.orientation.value/180*Math.PI-Math.PI/2,_=Math.cos(y),w=Math.sin(y);s=0,b=0,o=_,c=w,o<0&&(s-=o,o=0),c<0&&(b-=c,c=0)}let h=Re(u,l.colorStops);return[`satori_bi${d}`,`<linearGradient id="satori_bi${d}" x1="${s}" y1="${b}" x2="${o}" y2="${c}">${h.map(y=>`<stop offset="${y.offset*100}%" stop-color="${y.color}"/>`).join("")}</linearGradient>`]}if(n.startsWith("radial-gradient(")){let l=qd.parse(n)[0],s=l.orientation[0],[b,o]=m,c="circle",h=b/2,y=o/2;if(s.type==="shape"){if(c=s.value,s.at)if(s.at.type==="position")h=s.at.value.x.value,y=s.at.value.y.value;else throw new Error("orientation.at.type not implemented: "+s.at.type)}else throw new Error("orientation.type not implemented: "+s.type);let _=Re(u,l.colorStops),w=`satori_radial_${d}`,G=`satori_pattern_${d}`,W={},N=Math.max(Math.abs(b-h),Math.abs(h)),S=Math.max(Math.abs(o-y),Math.abs(y));if(c==="circle")W.r=Math.sqrt(N*N+S*S);else if(c==="ellipse"){let k=S!==0?N/S:1;W.ry=Math.sqrt(N*N+S*S*k*k)/k,W.rx=W.ry*k}let H=x("pattern",{id:G,x:g[0],y:g[1],width:i?b:"100%",height:a?o:"100%",patternUnits:"userSpaceOnUse"},x("radialGradient",{id:w},_.map(k=>x("stop",{offset:k.offset,"stop-color":k.color})).join(""))+x(c,id(M({cx:h,cy:y,width:b,height:o},W),{fill:`url(#${w})`})));return[G,H]}if(n.startsWith("url(")){let l=n.slice(4,-1);return[`satori_bi${d}`,x("pattern",{id:`satori_bi${d}`,patternContentUnits:"userSpaceOnUse",patternUnits:"userSpaceOnUse",x:g[0],y:g[1],width:i?m[0]:"100%",height:a?m[1]:"100%"},x("image",{x:0,y:0,width:m[0],height:m[1],href:l}))]}}function Id(d,u,e){return e<d+u&&(e/2<d&&e/2<u?d=u=e/2:e/2<d?d=e-u:e/2<u&&(u=e-d)),[d,u]}function Ed({left:d,top:u,width:e,height:n},f){let{borderTopLeftRadius:t,borderTopRightRadius:r,borderBottomLeftRadius:i,borderBottomRightRadius:a}=f;return t=Math.min(t||0,e,n),r=Math.min(r||0,e,n),i=Math.min(i||0,e,n),a=Math.min(a||0,e,n),!t&&!r&&!i&&!a?"":([t,r]=Id(t,r,e),[t,i]=Id(t,i,n),[r,a]=Id(r,a,n),[i,a]=Id(i,a,e),`M${d+t},${u} h${e-t-r} a${r},${r} 0 0 1 ${r},${r} v${n-r-a} a${a},${a} 0 0 1 ${-a},${a} h${a+i-e} a${i},${i} 0 0 1 ${-i},${-i} v${i+t-n} a${t},${t} 0 0 1 ${t},${-t}`)}function Zd({left:d,top:u,width:e,height:n,path:f,id:t},r){return r.overflow!=="hidden"?"":f?x("clipPath",{id:`satori_cp-${t}`,"clip-path":r._inheritedClipPathId?`url(#${r._inheritedClipPathId})`:void 0},x("path",{x:d,y:u,width:e,height:n,d:f})):x("clipPath",{id:`satori_cp-${t}`,"clip-path":r._inheritedClipPathId?`url(#${r._inheritedClipPathId})`:void 0},x("rect",{x:d,y:u,width:e,height:n}))}function Qd({id:d,left:u,top:e,width:n,height:f,isInheritingTransform:t,debug:r},i){if(i.display==="none")return"";let a="rect",m="transparent",g=0,l="",s="",b=[],o=1,c="";i.backgroundColor&&b.push(i.backgroundColor),i.borderWidth&&(g=i.borderWidth,m=i.borderColor),i.opacity&&(o=+i.opacity),i.transform&&(l=cd({left:u,top:e,width:n,height:f},i.transform,t,i.transformOrigin));let h="";if(i.backgroundImage){let H=i.backgroundImage.map((T,k)=>Kd({id:d+"_"+k,width:n,height:f},T)).filter(Boolean);for(let T of H)b.push(`url(#${T[0]})`),s+=T[1],T[2]&&(h+=T[2])}let y=Ed({left:u,top:e,width:n,height:f},i);y&&(a="path");let _=Zd({left:u,top:e,width:n,height:f,path:y,id:d},i),w=i._inheritedClipPathId,G=sd({width:n,height:f,id:d},i);r&&(c=x("rect",{x:u,y:e,width:n,height:f,fill:"transparent",stroke:"#ff5757","stroke-width":1,transform:l||void 0,"clip-path":w?`url(#${w})`:void 0})),b.length||b.push("transparent");let{backgroundClip:W,filter:N}=i,S=b.map((H,T)=>{if(H==="transparent"&&!(T===b.length-1&&g))return"";let k=T===b.length-1&&g&&W!=="text";return x(a,{x:u,y:e,width:n,height:f,fill:H,stroke:k?m:void 0,"stroke-width":k?g:void 0,d:y||void 0,transform:l||void 0,"clip-path":W==="text"?`url(#satori_bct-${d})`:w?`url(#${w})`:void 0,style:N?`filter:${N}`:void 0})}).join("");return W==="text"&&g&&(S=x(a,{x:u,y:e,width:n,height:f,fill:"transparent",stroke:m,"stroke-width":g,d:y||void 0,transform:l||void 0,"clip-path":w?`url(#${w})`:void 0})+S),(s?`<defs>${s}</defs>`:"")+_+(G?`${G}<g filter="url(#satori_s-${d})">`:"")+(o!==1?`<g opacity="${o}">`:"")+(h||S)+(o!==1?"</g>":"")+(G?"</g>":"")+c}function de({id:d,left:u,top:e,width:n,height:f,src:t,debug:r,isInheritingTransform:i},a){if(a.display==="none")return"";let m="",g=1,l="",s=a.objectFit==="contain"?"xMidYMid":a.objectFit==="cover"?"xMidYMid slice":"none",b=Ed({left:u,top:e,width:n,height:f},a),o=a._inheritedClipPathId;b&&(m=x("clipPath",{id:`satori_c-${d}`,"clip-path":o?`url(#${o})`:void 0},x("path",{x:u,y:e,width:n,height:f,d:b}))),a.opacity&&(g=+a.opacity);let c=sd({width:n,height:f,id:d},a);return a.transform&&(l=cd({left:u,top:e,width:n,height:f},a.transform,i,a.transformOrigin)),c+(c?`<g filter="url(#satori_s-${d})">`:"")+m+x("image",{x:u,y:e,width:n,height:f,href:t,preserveAspectRatio:s,transform:l||void 0,"clip-path":m?`url(#satori_c-${d})`:o?`url(#${o})`:void 0})+(c?"</g>":"")}function*_d(d,u){let e=ed(),{id:n,inheritedStyle:f,parent:t,font:r,debug:i,embedFont:a=!0,graphemeImages:m,canLoadAdditionalAssets:g}=u;if(d===null||typeof d=="undefined")return yield,yield,"";if(!Wd(d)||typeof d.type=="function"){let v;if(!Wd(d))v=Vd(String(d),u),yield v.next().value;else{if(me(d.type))throw new Error("Class component is not supported.");v=_d(d.type(d.props),u),yield v.next().value}v.next();let p=yield;return v.next(p).value}let{type:l,props:s}=d,{style:b,children:o}=s,c=e.Node.create();t.insertChild(c,t.getChildCount());let[h,y]=Xd(c,l,f,b,s),_=h.transform===f.transform;if(_||(h.transform.__parent=f.transform),h.overflow==="hidden"&&(y._inheritedClipPathId=`satori_cp-${n}`),h.backgroundClip==="text"){let v={value:""};y._inheritedBackgroundClipTextPath=v,h._inheritedBackgroundClipTextPath=v}let w=typeof o=="undefined"?[]:[].concat(o),G=[],W=0,N=[];for(let v of w){let p=_d(v,{id:n+"-"+W++,parentStyle:h,inheritedStyle:y,isInheritingTransform:!0,parent:c,font:r,embedFont:a,debug:i,graphemeImages:m,canLoadAdditionalAssets:g});g?N.push(...p.next().value||[]):p.next(),G.push(p)}yield N;for(let v of G)v.next();let[S,H]=yield;h.position==="absolute"&&c.calculateLayout();let{left:T,top:k,width:X,height:K}=c.getComputedLayout();T+=S,k+=H;let Q="",R="",$="";l==="img"?R=de({id:n,left:T,top:k,width:X,height:K,src:s.src,isInheritingTransform:_,debug:i},h):R=Qd({id:n,left:T,top:k,width:X,height:K,isInheritingTransform:_,debug:i},h);for(let v of G)Q+=v.next([T,k]).value;return h._inheritedBackgroundClipTextPath&&($+=x("clipPath",{id:`satori_bct-${n}`,"clip-path":h._inheritedClipPathId?`url(#${h._inheritedClipPathId})`:void 0},h._inheritedBackgroundClipTextPath.value)),$+R+Q}import lu from"@shuding/opentype.js";function pu(d,u,[e,n],[f,t]){if(e!==f)return e?!f||e===d?-1:f===d?1:d===400&&e===500||d===500&&e===400?-1:d===400&&f===500||d===500&&f===400?1:d<400?e<d&&f<d?f-e:e<d?-1:f<d?1:e-f:d<e&&d<f?e-f:d<e?-1:d<f?1:f-e:1;if(n!==t){if(n===u)return-1;if(t===u)return 1}return-1}var Ad=class{constructor(u){this.fonts=new Map;this.addFonts(u)}get({name:u,weight:e,style:n}){if(!this.fonts.has(u))return null;e==="normal"&&(e=400),e==="bold"&&(e=700);let f=[...this.fonts.get(u)],t=f[0];for(let r=1;r<f.length;r++){let[,i,a]=t,[,m,g]=f[r];pu(e,n,[i,a],[m,g])>0&&(t=f[r])}return t[0]}addFonts(u){for(let e of u){let n=e.data,f=lu.parse("buffer"in n?n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength):n,{lowMemory:!0}),t=f.charToGlyphIndex;f.charToGlyphIndex=i=>{let a=t.call(f,i);return a===0&&f._trackBrokenChars&&f._trackBrokenChars.push(i),a},this.defaultFont||(this.defaultFont=f);let r=e.name.toLowerCase();this.fonts.has(r)||this.fonts.set(r,[]),this.fonts.get(r).push([f,e.weight,e.style])}}getEngine(u=16,e=1.2,{fontFamily:n,fontWeight:f=400,fontStyle:t="normal"}){n=Array.isArray(n)?n:[n];let r=n.map(o=>this.get({name:o,weight:f,style:t})).filter(Boolean),i=Array.from(this.fonts.keys());for(let o of i)n.includes(o)||r.push(this.get({name:o,weight:f,style:t}));let a=new Map,m=(o,c=!0)=>{let h=o.charCodeAt(0);if(a.has(h))return a.get(h);let y=r.find((_,w)=>!!_.charToGlyphIndex(o)||c&&w===r.length-1);return y&&a.set(h,y),y},g=(o,c=!1)=>{var y,_;return((c?(_=(y=o.tables)==null?void 0:y.os2)==null?void 0:_.sTypoAscender:0)||o.ascender)/o.unitsPerEm*u},l=(o,c=!1)=>{var y,_;return((c?(_=(y=o.tables)==null?void 0:y.os2)==null?void 0:_.sTypoDescender:0)||o.descender)/o.unitsPerEm*u},s=o=>m(o,!1),b={check:o=>{let c=s(o);return c?(c._trackBrokenChars=[],c.stringToGlyphs(o),c._trackBrokenChars.length?(c._trackBrokenChars=void 0,!1):!0):!1},baseline:(o,c=typeof o=="undefined"?r[0]:m(o))=>{let h=g(c,!0),y=l(c,!0),_=h-y,w=b.glyphHeight(o,c),G=(w-_)/2,{yMax:W,yMin:N}=c.tables.head,S=W/(W-N);return G+S*w},glyphHeight:(o,c=typeof o=="undefined"?r[0]:m(o))=>(g(c)-l(c))*e/1.2,measure:(o,c)=>this.measure(m,o,c),getSVG:(o,c)=>this.getSVG(m,o,c)};return b}patchFontFallbackResolver(u,e){let n=[];u._trackBrokenChars=n;let f=u.stringToGlyphs;return u.stringToGlyphs=(t,...r)=>{let i=f.call(u,t,...r);for(let a=0;a<i.length;a++)if(i[a].unicode===void 0){let m=n.shift(),g=e(m);g!==u&&(i[a]=g.charToGlyph(m))}return i},()=>{u.stringToGlyphs=f,u._trackBrokenChars=void 0}}measure(u,e,{fontSize:n,letterSpacing:f=0}){let t=u(e),r=this.patchFontFallbackResolver(t,u);try{return t.getAdvanceWidth(e,n,{letterSpacing:f/n})}finally{r()}}getSVG(u,e,{fontSize:n,top:f,left:t,letterSpacing:r=0}){let i=u(e),a=this.patchFontFallbackResolver(i,u);try{return i.getPath(e,t,f,n,{letterSpacing:r/n}).toPathData(1)}finally{a()}}};function ee({width:d,height:u,content:e}){return x("svg",{width:d,height:u,viewBox:`0 0 ${d} ${u}`,xmlns:"http://www.w3.org/2000/svg"},e)}var mu=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udeeb\udeec\udef4-\udefc\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78\udd7a-\uddb4\uddb7\uddba\uddbc-\uddcb\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7a\ude80-\ude86\ude90-\udea8\udeb0-\udeb6\udec0-\udec2\uded0-\uded6]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g;function ve(d){return d.match(mu)}var ue=new WeakMap;async function Ce(d,u){let e=ed();if(!e)throw new Error("Satori is not initialized.");let n;ue.has(u.fonts)?n=ue.get(u.fonts):ue.set(u.fonts,n=new Ad(u.fonts));let f=e.Node.create();f.setWidth(u.width),f.setHeight(u.height),f.setFlexDirection(e.FLEX_DIRECTION_ROW),f.setFlexWrap(e.WRAP_WRAP),f.setAlignContent(e.ALIGN_AUTO),f.setAlignItems(e.ALIGN_FLEX_START),f.setJustifyContent(e.JUSTIFY_FLEX_START),f.setOverflow(e.OVERFLOW_HIDDEN);let t=M({},u.graphemeImages),r=_d(d,{id:"id",parentStyle:{},inheritedStyle:{fontSize:16,fontWeight:"normal",fontFamily:"serif",fontStyle:"normal",lineHeight:1.2,color:"black",opacity:1,whiteSpace:"normal",_viewportWidth:u.width,_viewportHeight:u.height},parent:f,font:n,embedFont:u.embedFont,debug:u.debug,graphemeImages:t,canLoadAdditionalAssets:!!u.loadAdditionalAsset}),i=r.next().value;if(u.loadAdditionalAsset&&i.length){i=Array.from(new Set(od(i.join(""),"grapheme")));let m={};i.forEach(s=>gu.detect(s,b=>{b==="unknown"&&ve(s)&&(b="emoji"),m[b]=m[b]||[],b==="emoji"?m[b].push(s):m[b][0]=(m[b][0]||"")+s}));let g=[],l={};await Promise.all(Object.entries(m).flatMap(([s,b])=>b.map(o=>u.loadAdditionalAsset(s,o).then(c=>{typeof c=="string"?l[o]=c:c&&g.push(c)})))),n.addFonts(g),Object.assign(t,l)}r.next(),f.calculateLayout(u.width,u.height,e.DIRECTION_LTR);let a=r.next([0,0]).value;return f.freeRecursive(),ee({width:u.width,height:u.height,content:a})}export{Ce as default,Ne as init};
5
+ /*! Copyright Twitter Inc. and other contributors. Licensed under MIT */
5
6
  //# sourceMappingURL=index.js.map