@graphysdk/viz-engine 2.0.0-beta.1787130761469 → 2.0.0-beta.1787253424098

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
@@ -23,3 +23,13 @@ const { compiled } = createCompiler().compile({ input, data });
23
23
 
24
24
  - [How a chart is built](https://docs.graphy.dev/sdk-next/concepts/how-a-chart-is-built)
25
25
  - [Quickstart](https://docs.graphy.dev/sdk-next/quickstart)
26
+
27
+ For React painting, use [`@graphysdk/react`](https://www.npmjs.com/package/@graphysdk/react) (recommended) or [`@graphysdk/react-renderer`](https://www.npmjs.com/package/@graphysdk/react-renderer).
28
+
29
+ ## Licence
30
+
31
+ This package is available under PolyForm Noncommercial, Small Business, or a 32-day Free Trial. Free Trial is local or internal evaluation only — it does not cover a public page. See [what you can do under the trial](https://docs.graphy.dev/licence/evaluation).
32
+
33
+ ## Support
34
+
35
+ Questions and community help: [Discord](https://discord.gg/yGmYCjkSr).
@@ -0,0 +1 @@
1
+ let g=require("date-fns"),pe=require("lodash-es");var pt=e=>e.length>0;function Z(e){return e!=null}function ht(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}var he="\0graphy\0_",y=e=>`${he}${e}`,ee={x:y("constantX")},vt={bar:y("barSeriesLabel"),line:y("lineSeriesLabel")},te={count:y("count"),mean:y("mean"),sum:y("sum")},ve={group:y("group")},Ee={x:y("x"),y:y("y"),xMin:y("xMin"),xMax:y("xMax"),yMin:y("yMin"),yMax:y("yMax"),yRaw:y("yRaw")},Oe={role:y("stackRole")},Ae={color:y("color"),size:y("size"),alpha:y("alpha"),strokeWidth:y("strokeWidth"),lineType:y("lineType")},Te={y:y("ruleY"),x:y("ruleX")},Vn={...ee,...te,...ve,...Ee,...Oe,...Ae,...Te},Et=new Set(Object.values(te)),Ot=e=>y(`scaled_${e}`),At=e=>e.startsWith(he),Tt=e=>Et.has(e);function Mt(e){const{numeric:t,categorical:r,temporal:n}=e.groupVariableNamesByType();return n[0]??r[0]??t[0]??""}function _t(e,t){const{categorical:r,temporal:n}=e.groupVariableNamesByType(),a=[...r,...n];return t===""||a.includes(t)?a:[t,...a]}function Ft(e){const t=re(e.x);return t===null||t===ee.x?"":t}function re(e){return Z(e)?typeof e=="string"?e:"variable"in e?e.variable:null:null}function Me(e){if(!(!Z(e)||typeof e=="string")&&"value"in e)return e.value}function Lt(e,t){return[...new Set([...Object.keys(e),...Object.keys(t)])].every(r=>ue(e[r])===ue(t[r]))}function ue(e){const t=re(e);if(t!==null)return`variable:${t}`;const r=Me(e);return r===void 0?"":r===null?"value:null":r instanceof Date?`value:date:${r.getTime()}`:`value:${typeof r}:${r}`}var z=e=>e instanceof Date&&(0,g.isValid)(e),Dt=e=>z(e)||e===null,St=e=>typeof e=="string",_e=e=>typeof e=="number"&&!Number.isNaN(e)&&Number.isFinite(e),Pt=e=>_e(e)||e===null,$=e=>(Array.isArray(e)?e:[e]).map(t=>t instanceof Date?t.toISOString():String(t??"<null>")).join("\0"),wt=(e,t)=>e===t?!0:z(e)&&z(t)?e.getTime()===t.getTime():!1,D=process.env.NODE_ENV!=="production";var G=!0,Rt=e=>{G=e},Ct=()=>G,jt=()=>{let e=null;const t={hits:0,misses:0};return Object.assign((n,a)=>{if(!G)return D&&(t.misses+=1),a();if(e&&Le(e.args,n))return D&&(t.hits+=1),e.out;D&&(t.misses+=1);const o=a();return e={args:n,out:o},o},{stats:t,reset:()=>{e=null}})},Fe=()=>{const e=new WeakMap,t={hits:0,misses:0};return Object.assign((n,a,o)=>{if(!G)return D&&(t.misses+=1),o();const i=e.get(n);if(i)for(let l=0;l<i.length;l+=1){const u=i[l];if(u&&Le(u.args,a))return D&&(t.hits+=1),l>0&&(i.splice(l,1),i.unshift(u)),u.out}D&&(t.misses+=1);const s=o();return i?(i.unshift({args:a,out:s}),i.length>16&&(i.length=16)):e.set(n,[{args:a,out:s}]),s},{stats:t})},Nt=(...e)=>e.reduce((t,r)=>({hits:t.hits+r.hits,misses:t.misses+r.misses}),{hits:0,misses:0}),Le=(e,t)=>{if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(e[r]!==t[r])return!1;return!0},De=class{constructor(){this.memo=Fe(),this.singletonKey={}}get stats(){return this.memo.stats}compile(e){return this.memo(this.key(e),this.dependencies(e),()=>this.run(e))}key(e){return this.singletonKey}},ne=class extends Error{constructor(e){super(e.message,e.cause!==void 0?{cause:e.cause}:void 0),this.name=new.target.name,this.code=e.code,this.context=e.context,this.suggestion=e.suggestion}},N=class extends ne{constructor(e){super(e),this.kind="user-input"}},v=class extends ne{constructor(e){super({...e,code:e.code??"INTERNAL_INVARIANT"}),this.kind="internal"}},ae=e=>e.type==="lookup",Se=e=>e.type==="text",I=e=>e.type==="date"||e.type==="datetime"||e.type==="year"||e.type==="month_year"||e.type==="month"||e.type==="day_month"||e.type==="weekly_date_range"||e.type==="weekly_date_range_with_year"||e.type==="quarter"||e.type==="time",Pe=e=>e.type==="decimal"||e.type==="integer"||e.type==="percentage"||e.type==="duration"||e.type==="currency",kt=e=>e.type==="currency",It=e=>e.type==="month"||e.type==="day_month"||e.type==="weekly_date_range",we=e=>{if(ae(e))return we(e.fallback);if(I(e))return"temporal";if(Pe(e))return"numeric";if(Se(e))return"categorical";throw new v({message:`No data type found for value format: ${e.type}`})},Vt=e=>ae(e)?e.fallback:e,Re={k:1e3,m:1e6,b:1e9,t:1e12},oe=["k","m","b","t"],Bt=new RegExp(`^-?(\\d{1,3}(,\\d{3})*|\\d+)\\.?\\d*(${oe.join("|")})?$`,"i"),xt=/^-?\d{1,3}(?:,\d{3})*(?:\.\d+)?%?$/,S=e=>e===null||e instanceof Date||Array.isArray(e)||typeof e=="boolean"?!1:typeof e=="string"?Bt.test(e)&&!Number.isNaN(Number(e.replace(new RegExp(`[,${oe.join("")}]`,"gi"),""))):!Number.isNaN(Number(e)),Ce=e=>S(e)?!0:typeof e=="string"?xt.test(e):!1,je={$:"usd","£":"gbp","€":"eur","¥":"jpy","₹":"inr","₱":"php",P:"php","₩":"krw","₪":"ils","₫":"vnd","₽":"rub","฿":"thb",R$:"brl",Rp:"idr",RM:"myr","₦":"ngn",zł:"pln","₺":"try",kr:"dkk",Fr:"chf",R:"zar","د.إ":"aed","﷼":"sar",Ch$:"clp",NT$:"twd",HK$:"hkd",S$:"sgd",A$:"aud",C$:"cad",NZ$:"nzd",MX$:"mxn"},Ne=e=>{if(typeof e=="string"){const t=ke(e);return t.length?S(t):!1}return S(e)},Ut=e=>{const t=Ie(e),r=t?je[t]:void 0;if(!r)throw new v({message:"Could not get currency ISO"});return r},ke=e=>{const t=Ie(e);let r=e;if(t){const n=e.indexOf(t);n===0?r=e.slice(t.length):n===e.length-t.length?r=e.slice(0,e.length-t.length):e[0]==="-"&&n===1&&(r=`-${e.slice(t.length+1)}`)}return S(r)?r.split(",").join(""):""},Ie=e=>Object.keys(je).sort((t,r)=>r.length-t.length).find(t=>e.includes(t)),Ve=e=>{const t=Object.entries(e);return!t.length||!t.some(([,r])=>!V(r))},V=e=>typeof e=="string"&&e.trim()===""||e===void 0||e===null||e==="-",ie="en-GB",Be=class{constructor(){this.currentYear=new Date().getUTCFullYear(),this.previousDate=null,this.previousYear=null}incrementYearIfNeeded(e){this.previousYear===null?this.previousYear=e.getUTCFullYear():this.previousDate!==null&&(0,g.isBefore)(new Date(this.currentYear,e.getUTCMonth(),e.getUTCDate()),new Date(this.currentYear,this.previousDate.getUTCMonth(),this.previousDate.getUTCDate()))&&this.previousYear++;const t=new Date(e.getTime());return t.setUTCFullYear(this.previousYear),this.previousDate=t,t}},Yt=/^\d{4}-\d{2}-\d{2}(T|\s)\d{1,2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|\+00:00)?$/,zt=/^\s*(19\d{2}|2[01]\d{2})\s*$/,$t=[[/\bJan\b/i,"January"],[/\bFeb\b/i,"February"],[/\bMar\b/i,"March"],[/\bApr\b/i,"April"],[/\bJun\b/i,"June"],[/\bJul\b/i,"July"],[/\bAug\b/i,"August"],[/\bSept?\b/i,"September"],[/\bOct\b/i,"October"],[/\bNov\b/i,"November"],[/\bDec\b/i,"December"]],Wt={"en-US":"MDY","en-GB":"DMY","pt-PT":"DMY",ar:"DMY"},xe=["/","-","."," "],ce=[["d","M","yy"],["d","MM","yy"],["d","MMMM","yy"],["dd","M","yy"],["dd","MM","yy"],["dd","MMMM","yy"],["do","MMMM","yy"],["d","M","yyyy"],["d","MM","yyyy"],["d","MMMM","yyyy"],["dd","M","yyyy"],["dd","MM","yyyy"],["dd","MMMM","yyyy"],["do","MMMM","yyyy"]],de=[["M","d","yy"],["M","dd","yy"],["MM","d","yy"],["MM","dd","yy"],["MMMM","d","yy"],["MMMM","dd","yy"],["MMMM","do","yy"],["M","d","yyyy"],["M","dd","yyyy"],["MM","d","yyyy"],["MM","dd","yyyy"],["MMMM","d","yyyy"],["MMMM","dd","yyyy"],["MMMM","do","yyyy"]],fe=[["yyyy","M","d"],["yyyy","M","dd"],["yyyy","MM","d"],["yyyy","MM","dd"],["yyyy","MMMM","d"],["yyyy","MMMM","dd"],["yyyy","MMMM","do"]],Ue=[["d","MMMM"],["dd","MMMM"],["do","MMMM"],["MMMM","d"],["MMMM","dd"],["MMMM","do"]],Gt=[{dateFormat:"MMMM d, yyyy",type:"date"},{dateFormat:"MMMM dd, yyyy",type:"date"},{dateFormat:"MMMM do, yyyy",type:"date"},{dateFormat:"yyyy-MM",type:"month_year"}],Ye=1900,ze=2199,Ht=3,Kt=6,qt=5,Xt=1,Qt=28,Jt=/\s*[–—]\s*|\s-\s/,Zt=e=>typeof e=="number"?Number.isNaN(e)?!1:e>=Ye&&e<=ze:typeof e=="string"?zt.test(e):!1,$e=(e,t)=>{const r=k(e);return!t&&S(r)?nr(r):typeof r=="string"?t?(0,g.isValid)((0,g.parse)(r,t,new Date)):!!We(r)||H(r)&&(0,g.isValid)(new Date(r)):(0,g.isValid)(r)},k=e=>{if(typeof e!="string")return e;let t=e;for(const[r,n]of $t)t=t.replace(r,n);return t},We=(e,t=ie)=>{const r=k(e);return H(r)?{type:"datetime"}:Ge(t).find(n=>!I(n)||n.type==="month"&&r.length<Ht?!1:n.dateFormat&&(0,g.isValid)((0,g.parse)(r,n.dateFormat,new Date)))},H=e=>Yt.test(e.trim()),er=e=>{if(e instanceof Date)return(0,g.isValid)(e)?e:null;if(typeof e!="string"||!H(e))return null;const t=new Date(e.trim());return(0,g.isValid)(t)?t:null},tr=(e,t=ie)=>{const[r,n]=e.split(Jt);if(!r||!n)return;const a=k(r).trim(),o=k(n).trim();return rr(t).find(i=>{if(!I(i)||!i.dateFormat)return!1;const s=(0,g.parse)(a,i.dateFormat,new Date),l=(0,g.parse)(o,i.dateFormat,new Date);if(!(0,g.isValid)(s)||!(0,g.isValid)(l))return!1;const u=new Be,m=u.incrementYearIfNeeded(s),p=u.incrementYearIfNeeded(l),d=(0,g.differenceInDays)(p,m);return(0,g.isWithinInterval)(new Date(m.getFullYear(),Xt,Qt),{start:m,end:p})&&d===qt?!0:d===Kt})},Ge=e=>{const t={date:He(e),year:[["yyyy"]],day_month:Ue,month_year:[["MMMM","yyyy"],["yyyy","MMMM"]],month:[["MMMM"]],quarter:[["QQQ","yyyy"],["yyyy","QQQ"]]};return[...Gt,...Object.entries(t).flatMap(([r,n])=>n.flatMap(a=>xe.map(o=>({dateFormat:a.join(o),type:r}))))]},He=e=>Wt[e]==="MDY"?[...de,...ce,...fe]:[...ce,...de,...fe],rr=e=>{const t={weekly_date_range:Ue,weekly_date_range_with_year:He(e)};return Object.entries(t).flatMap(([r,n])=>n.flatMap(a=>xe.map(o=>({dateFormat:a.join(o),type:r}))))},nr=e=>{const t=Number(e);if(!(0,pe.isInteger)(t))return!1;const r=new Date(t),n=new Date(t*1e3),a=o=>(0,g.isValid)(o)&&o.getFullYear()>=Ye&&o.getFullYear()<=ze;return a(r)||a(n)},ar=/\s*[–—]\s*|\s-\s/,Ke=(e,t,r)=>{if(V(e))return null;switch(t.type){case"decimal":case"integer":case"duration":return Xe(e);case"percentage":return or(e);case"currency":return ir(e);case"datetime":case"date":case"year":case"month_year":case"month":case"day_month":case"quarter":case"time":return qe(e,t.dateFormat,r);case"weekly_date_range":case"weekly_date_range_with_year":return sr(e,t.dateFormat,r);case"text":return lr(e);case"lookup":throw new v({message:"Cannot parse: lookup value formats are produced by transforms, not raw input"});default:throw new v({message:`Unhandled value format: ${t.type}`})}},qe=(e,t,r)=>{if(e instanceof Date)return(0,g.isValid)(e)?e:null;const n=k(String(e).trim());if(n.length===0)return null;const a=new Date;if(t){const i=(0,g.parse)(n,t,a);return(0,g.isValid)(i)?K(i):null}for(const i of Ge(r)){if(!I(i)||!i.dateFormat)continue;const s=(0,g.parse)(n,i.dateFormat,a);if((0,g.isValid)(s))return K(s)}const o=new Date(n);return $e(o)?H(n)?o:K(o):null},Xe=e=>{if(typeof e=="number")return Number.isNaN(e)?null:e;if(typeof e!="string")return null;let t=e.trim();if(!S(t))return null;let r=1;for(const n of oe)if(new RegExp(`${n}$`,"i").test(t)){r=Re[n],t=t.slice(0,-1);break}return Number(t.split(",").join(""))*r},or=e=>{if(typeof e=="number")return Number.isNaN(e)?null:e;if(typeof e!="string")return null;const t=e.trim();if(!Ce(t))return null;const r=Number(t.replace(/%/g,"").replace(/,/g,""))/100;return Number.isNaN(r)?null:r},ir=e=>{if(typeof e=="number")return Number.isNaN(e)?null:e;if(typeof e!="string")return null;const t=e.trim();return Ne(t)?Xe(ke(t)):null},sr=(e,t,r)=>{const n=String(e).trim().split(ar),[a,o]=[n[0]?.trim(),n[1]?.trim()];return!a||!o?null:qe(a,t,r)},lr=e=>String(e).trim(),K=e=>new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())),ur=new Set(["count","sum","mean","median"]);function Qe(e,t){return ur.has(e)?"numeric":t}function Je(e,t,r){const n=r?.length??t.length;if(e==="count")return n;if(e==="median"||e==="mode"){const i=[];for(let s=0;s<n;s++){const l=q(t,r,s);X(l)&&i.push(l)}return i.length===0?null:e==="median"?fr(i):yr(i)}if(e==="sum"||e==="mean"){let i=0,s=0;for(let l=0;l<n;l++){const u=q(t,r,l);X(u)&&(i++,s+=Number(u))}return i===0?null:e==="sum"?s:s/i}const a=e==="min"?-1:1;let o=null;for(let i=0;i<n;i++){const s=q(t,r,i);X(s)&&(o===null||cr(s,o)===a)&&(o=s)}return o}var q=(e,t,r)=>e[t?.[r]??r]??null,X=e=>e!==null&&!(typeof e=="number"&&Number.isNaN(e)),cr=(e,t)=>e===null||t===null?0:e<t?-1:e>t?1:0,dr=e=>e instanceof Date?e.getTime():e??null;function fr(e){const t=e.map(Number).sort((o,i)=>o-i);if(t.length===1)return t[0]??0;const r=(t.length-1)/2,n=Math.floor(r),a=t[n]??0;return a+((t[n+1]??a)-a)*(r-n)}function yr(e){const t=new Map;for(const a of e){const o=dr(a),i=t.get(o);i===void 0?t.set(o,{value:a,count:1}):i.count++}let r=null,n=0;for(const{value:a,count:o}of t.values())o>n&&(n=o,r=a);return r}var mr=e=>e==null||typeof e=="number"&&Number.isNaN(e),gr=e=>e instanceof Date?e.getTime():e??null,Q=class F{constructor(t,r,n,a=null){this.rowShape=null,this.names=t,this.columns=r,this.rowCount=n,this.source=a}get columnCount(){return this.names.length}static from(t){const r=Object.entries(t);return new F(r.map(([n])=>n),new Map(r),r[0]?.[1].length??0)}columnNames(){return[...this.names]}hasColumn(t){return this.names.includes(t)}values(t){const r=this.columns.get(t);if(r!==void 0)return r;if(this.source===null||!this.names.includes(t))return;const n=this.source.table.values(t);if(n===void 0)return;const{indices:a}=this.source,o=new Array(a.length);for(let i=0;i<a.length;i++)o[i]=n[a[i]??0]??null;return this.columns.set(t,o),this.columns.size===this.names.length&&(this.source=null),o}assign(t,r){const n=this.gathered(),a=new Map(n.columns);a.set(t,r);const o=n.names.includes(t)?[...n.names]:[...n.names,t];return new F(o,a,n.names.length===0?r.length:n.rowCount)}select(t){const r=t.filter(a=>this.names.includes(a)),n=new Map;for(const a of r){const o=this.columns.get(a);o!==void 0&&n.set(a,o)}return new F(r,n,this.rowCount,this.source)}rename(t,r){const n=this.gathered(),a=new Map;for(const o of n.names){const i=n.columns.get(o);i!==void 0&&a.set(o===t?r:o,i)}return new F(n.names.map(o=>o===t?r:o),a,n.rowCount)}take(t){const r=this.source===null?{table:this,indices:t}:{table:this.source.table,indices:t.map(n=>this.source?.indices[n]??0)};return new F(this.names,new Map,t.length,r)}sortedIndices(t,r){const n=this.values(t);if(n===void 0)return Array.from({length:this.rowCount},(s,l)=>l);const a=[],o=[];for(let s=0;s<this.rowCount;s++)(mr(n[s])?a:o).push(s);const i=r==="asc"?1:-1;return o.sort((s,l)=>{const u=n[s],m=n[l];return u<m?-i:u>m?i:0}),a.length===0?o:r==="asc"?[...a,...o]:[...o,...a]}partition(t){const r=t.map(o=>this.values(o)).filter(o=>o!==void 0),n=r.length===1?r[0]:void 0,a=new Map;if(n!==void 0){for(let o=0;o<this.rowCount;o++){const i=gr(n[o]),s=a.get(i);s===void 0?a.set(i,{key:$(n[o]??null),indices:[o]}):s.indices.push(o)}return[...a.values()]}for(let o=0;o<this.rowCount;o++){const i=$(r.map(l=>l[o])),s=a.get(i);s===void 0?a.set(i,{key:i,indices:[o]}):s.indices.push(o)}return[...a.values()]}fold(t,r,n){const a=this.names.filter(d=>!t.includes(d)),o=this.rowCount*t.length,i=a.map(d=>({name:d,source:this.values(d)??[],repeated:new Array(o)})),s=t.map(d=>this.values(d)??[]),l=new Array(o),u=new Array(o);let m=0;for(let d=0;d<this.rowCount;d++)for(let A=0;A<t.length;A++,m++){for(const P of i)P.repeated[m]=P.source[d]??null;l[m]=t[A]??"",u[m]=s[A]?.[d]??null}const p=new Map;for(const{name:d,repeated:A}of i)p.set(d,A);return p.set(r,l),p.set(n,u),new F([...a,r,n],p,o)}objectAt(t){const{names:r,arrays:n,template:a}=this.rowShape??this.resolveRowShape(),o={...a};for(let i=0;i<r.length;i++)o[r[i]??""]=n[i]?.[t]??null;return o}*[Symbol.iterator](){for(let t=0;t<this.rowCount;t++)yield this.objectAt(t)}resolveRowShape(){const t={};for(const r of this.names)t[r]=null;return this.rowShape={names:this.names,arrays:this.names.map(r=>this.values(r)??[]),template:t},this.rowShape}gathered(){if(this.source===null)return this;for(const t of this.names)this.values(t);return new F(this.names,new Map(this.columns),this.rowCount)}};var Ze="value",j={numeric:{type:"decimal"},categorical:{type:"text"},temporal:{type:"datetime"}},ye={eq:(e,t)=>e===t,neq:(e,t)=>e!==t,gt:(e,t)=>e!==null&&t!==null&&e>t,gte:(e,t)=>e!==null&&t!==null&&e>=t,lt:(e,t)=>e!==null&&t!==null&&e<t,lte:(e,t)=>e!==null&&t!==null&&e<=t},me=e=>e===null?null:e instanceof Date?e.getTime():new Date(e).getTime(),et=(e,t)=>e==="count"?{type:"integer"}:t,tt=(e,t,r)=>{const n=e.values(t);if(n!==void 0)return n;if(r==="count")return new Array(e.rowCount);throw new v({message:`Variable '${t}' not defined`})},W=class E{constructor(t={}){const{table:r,variableMetadata:n}=this.parseVariableMap(t);this.table=r,this.variableMetadata=n}static fromTrusted(t,r){const n=Object.create(E.prototype);return n.table=t,n.variableMetadata=r,n}size(){return this.table.rowCount}getVariableNames(){return this.table.columnNames()}hasVariable(t){return this.table.hasColumn(t)}addVariable(t,r,n,a){if(this.table.columnCount>0&&n.length!==this.size())throw new v({message:`Variable '${t}' has ${n.length} values, expected ${this.size()}`});const o={...this.variableMetadata,[t]:{type:r,valueFormat:this.resolveAddedVariableFormat(t,r,a)}},i=this.normalizeRawValues(r,n),s=this.table.assign(t,i);return E.fromTrusted(s,o)}addConstantVariable(t,r,n,a){const o={...this.variableMetadata,[t]:{type:r,valueFormat:this.resolveAddedVariableFormat(t,r,a),constant:{value:n}}},[i=null]=this.normalizeRawValues(r,[n]),s=this.table.assign(t,new Array(this.size()).fill(i));return E.fromTrusted(s,o)}getConstant(t){return this.variableMetadata[t]?.constant}deriveVariable(t,r,n,a){const o=Array.from({length:this.size()},(i,s)=>n(this.table.objectAt(s)));return this.addVariable(t,r,o,a)}deriveVariableFrom(t,r,n,a,o){const i=this.hasVariable(t)?this.getValues(t).map(a):Array.from({length:this.size()},()=>a(null));return this.addVariable(r,n,i,o)}renameVariable(t,r){const n=this.variableMetadata[t];if(!n)throw new v({message:`Variable ${t} not defined`});const a=this.table.rename(t,r),{[t]:o,...i}=this.variableMetadata,s={...i,[r]:n};return E.fromTrusted(a,s)}selectVariables(...t){const r=this.table.select(t),n=Object.fromEntries(Object.entries(this.variableMetadata).filter(([a])=>t.includes(a)));return E.fromTrusted(r,n)}getType(t){const r=this.variableMetadata[t];if(!r)throw new v({message:`Variable ${t} not defined`});return r.type}getValueFormat(t){const r=this.variableMetadata[t];if(!r)throw new v({message:`Variable ${t} not defined`});return r.valueFormat}groupVariableNamesByType(){const t={numeric:[],categorical:[],temporal:[]};for(const[r,{type:n}]of Object.entries(this.variableMetadata))t[n].push(r);return t}getValues(t,r){if(!this.hasVariable(t))throw new v({message:`Variable '${t}' not defined`});const n=this.getType(t);if(r?.type!==void 0&&n!==r.type)throw new v({message:`Variable '${t}' has type '${n}', expected '${r.type}'`});let a=this.table.values(t)??[];return r?.distinct&&(a=this.getDistinctValues(n,a)),r?.skipNulls&&(a=this.skipNulls(a)),a}filter(t,r,n){if(this.hasVariable(t)&&this.getType(t)==="temporal")return this.filterByTimestamp(t,r,n);const a=ye[r],o=this.table.values(t)??[],i=[];for(let s=0;s<o.length;s++)a(o[s]??null,n)&&i.push(s);return E.fromTrusted(this.table.take(i),this.variableMetadata)}filterByMask(t){if(t.length!==this.size())throw new v({message:`Row mask length ${t.length} does not match dataset size ${this.size()}`});const r=[];for(let n=0;n<t.length;n++)t[n]===1&&r.push(n);return E.fromTrusted(this.table.take(r),this.variableMetadata)}orderBy(t,r="asc"){const n=this.table.take(this.table.sortedIndices(t,r));return E.fromTrusted(n,this.variableMetadata)}getAt(t){return t<0||t>=this.size()?null:this.table.objectAt(t)}getFirst(){return this.getAt(0)}getLast(){return this.getAt(this.size()-1)}findLast(t){for(let r=this.size()-1;r>=0;r--){const n=this.table.objectAt(r);if(t(n))return n}return null}groupBy(...t){return new br(t,this.table,this.variableMetadata)}rollup(t){const r=Q.from(Object.fromEntries(Object.entries(t).map(([a,{variableName:o,aggregation:i}])=>[a,[Je(i,tt(this.table,o,i))]]))),n={};for(const[a,{variableName:o,aggregation:i}]of Object.entries(t)){const s=this.variableMetadata[o],l=s?.type??"numeric",u=s?.valueFormat??j[l];n[a]={type:Qe(i,l),valueFormat:et(i,u)}}return E.fromTrusted(r,n)}reshapeFromWideToLong({keep:t,reshape:r,keyName:n="key",valueName:a=Ze}={}){const{numeric:o,categorical:i,temporal:s}=this.groupVariableNamesByType(),l=t??[...i,...s],u=r??o.filter(d=>!l.includes(d));if(l.includes(n)||l.includes(a))throw new N({code:"INVALID_DATA_SHAPE",message:`The variables to keep includes the variables '${n}' or '${a}' to create the key and value variables`});if(u.length===0){const d={};for(const A of l){const P=this.variableMetadata[A];P&&(d[A]={type:P.type,values:[],valueFormat:P.valueFormat})}return d[n]={type:"categorical",values:[],valueFormat:{type:"text"}},d[a]={type:"numeric",values:[],valueFormat:{type:"decimal"}},new E(d)}if(u.filter(d=>this.variableMetadata[d]?.type!=="numeric").length>0)throw new N({code:"INVALID_DATA_SHAPE",message:"Only numeric variables can be reshaped"});const m=this.table.select([...l,...u]).fold(u,n,a),p={};for(const d of l){const A=this.variableMetadata[d];A&&(p[d]=A)}return p[n]={type:"categorical",valueFormat:{type:"text"}},p[a]={type:"numeric",valueFormat:pr(this.variableMetadata,u,n)},E.fromTrusted(m,p)}print(){console.table(this.variableMetadata),console.table([...this.table])}[Symbol.iterator](){return this.table[Symbol.iterator]()}filterByTimestamp(t,r,n){const a=ye[r],o=me(n),i=this.getValues(t,{type:"temporal"}),s=[];for(let l=0;l<i.length;l++)a(me(i[l]??null),o)&&s.push(l);return E.fromTrusted(this.table.take(s),this.variableMetadata)}resolveAddedVariableFormat(t,r,n){if(n!==void 0)return n;const a=this.variableMetadata[t];return a?a.valueFormat:j[r]}parseVariableMap(t){const r={},n={};for(const[a,{type:o,values:i,valueFormat:s}]of Object.entries(t))r[a]=i,n[a]={type:o,valueFormat:s??j[o]};return{table:Q.from(r),variableMetadata:n}}normalizeRawValues(t,r){switch(t){case"numeric":return r.map(n=>typeof n!="number"||Number.isNaN(n)?null:n);case"categorical":return r.map(n=>typeof n!="string"?null:n);case"temporal":return r.map(n=>!(n instanceof Date)||!(0,g.isValid)(n)?null:n);default:throw new v({message:`Cannot normalize raw value of unknown type: ${t}`})}}skipNulls(t){return t.filter(r=>r!==null)}getDistinctValues(t,r){const n=t==="temporal",a=new Set,o=[];for(const i of r){const s=n&&i instanceof Date?i.getTime():i;a.has(s)||(a.add(s),o.push(i))}return o}},br=class{constructor(e,t,r){this.groupedBy=e,this.table=t,this.variableMetadata=r}forEach(e){this.table.partition(this.groupedBy).forEach(({key:t,indices:r},n)=>{e(W.fromTrusted(this.table.take(r),this.variableMetadata),t,n)})}rollup(e){const t=this.table.partition(this.groupedBy),r={};for(const a of this.groupedBy){const o=this.table.values(a)??[];r[a]=t.map(({indices:i})=>o[i[0]??0]??null)}const n=Object.fromEntries(this.groupedBy.map(a=>{const o=this.variableMetadata[a],i=o?.type??"categorical";return[a,{type:i,valueFormat:o?.valueFormat??j[i]}]}));for(const[a,{variableName:o,aggregation:i}]of Object.entries(e)){const s=tt(this.table,o,i);r[a]=t.map(({indices:p})=>Je(i,s,p));const l=this.variableMetadata[o],u=l?.type??"numeric",m=l?.valueFormat??j[u];n[a]={type:Qe(i,u),valueFormat:et(i,m)}}return W.fromTrusted(Q.from(r),n)}};function pr(e,t,r){const n=t.map(s=>e[s]?.valueFormat??{type:"decimal"}),[a,...o]=n;if(!a)return{type:"decimal"};for(const s of n)if(s.type==="lookup")throw new N({code:"INVALID_DATA_SHAPE",message:"Cannot reshape: a source column has a lookup format and lookups cannot nest"});if(o.every(s=>(0,pe.isEqual)(s,a))||a.type==="lookup")return a;const i={};for(const[s,l]of t.entries()){const u=$([l]),m=n[s];m&&m.type!=="lookup"&&(i[u]=m)}return{type:"lookup",byVariable:r,cases:i,fallback:a}}var rt=class{constructor(e){this.label=e,this.items=new Map}register(e,t){return this.items.set(e,t),this}get(e){if(!this.items.has(e)){const t=[...this.items.keys()].map(r=>`'${r}'`).join(", ");throw new N({code:"UNKNOWN_REGISTERED_TYPE",message:`Unknown ${this.label}: '${e}' (available: ${t})`,context:{kind:this.label,requested:e,available:[...this.items.keys()]},suggestion:`Register a custom ${this.label} named '${e}' in the \`plugins\` array, or use one of: ${t}.`})}return this.items.get(e)}getAll(){return[...this.items.values()]}has(e){return this.items.has(e)}},hr=(e,t)=>{const r=typeof e=="string"?e.trim():e;if(S(r))return{type:"decimal"};const n=typeof r=="string"&&We(r,t);if(n)return n;const a=typeof r=="string"&&tr(r,t);return a||($e(e)?{type:"date"}:Ce(e)?{type:"percentage"}:Ne(e)&&typeof e=="string"?{type:"currency",iso:Ut(e)}:{type:"text"})},vr={type:"year",dateFormat:"yyyy"},nt=e=>{const t=e._metadata?.parsingLocale??"en-GB",r={},n=Tr(e),a=Or(e);for(const[o,i]of e.columns.entries()){if(i._metadata?.isHidden)continue;const s=n.get(i.key);if(V(s))continue;const l=o===a?vr:hr(s,t),u=we(l);r[i.key]=Ar(i.key,e.rows,l,u,t)}return new W(r)},Er=class extends De{dependencies(e){return[e]}run(e){return nt(e)}},Or=e=>{const t=Mr(e.rows,5);return e.columns.findIndex(r=>{const n=t.map(a=>a[r.key]).filter(a=>!V(a));return n.length>=2&&n.every(Zt)})},Ar=(e,t,r,n,a)=>({type:n,values:t.reduce((o,i)=>(Ve(i)||o.push(Ke(i[e],r,a)),o),[]),valueFormat:r}),Tr=e=>{const t=new Map,r=new Set(e.columns.map(n=>n.key));for(const n of e.rows){for(const a of r){const o=n[a];V(o)||(t.set(a,o),r.delete(a))}if(r.size===0)break}return t},Mr=(e,t)=>{const r=[];for(const n of e)if(Ve(n)||r.push(n),r.length===t)return r;return r},_r=class{constructor(){this.transformType="aggregate"}apply(e,t){const{options:r}=t,n={};for(const a of r.operations)n[a.as]={variableName:a.variableName,aggregation:a.op};return e.groupBy(...r.groupby).rollup(n)}},Fr=class{constructor(){this.transformType="constant"}apply(e,t){const{options:r}=t;return e.addConstantVariable(r.variableName,r.type,r.value)}getIntroducedVariables(e){const{options:t}=e;return[t.variableName]}},Lr=class{constructor(){this.transformType="filter"}apply(e,t){const{options:r}=t;return e.filter(r.variableName,r.operator,r.value)}},Dr=class{constructor(){this.transformType="reshape"}apply(e,t){const{options:r}=t;return e.reshapeFromWideToLong({keep:r.keep,reshape:r.reshape,keyName:r.keyName,valueName:r.valueName})}getIntroducedVariables(e){const{options:t}=e;return[t.keyName??"key"]}},Sr=class{constructor(){this.transformType="sort"}apply(e,t){const{options:r}=t;return e.orderBy(r.variableName,r.direction??"asc")}},Pr=[new _r,new Fr,new Lr,new Dr,new Sr],wr=class extends rt{constructor(){super("transform");for(const e of Pr)this.register(e.transformType,e)}},Rr=["grey","red","orange","yellow","green","cyan","blue","purple","pink"],Cr=["cyan","pink","purple","red","orange","yellow","green","blue"],se=["#B399FE","#FC7E91","#33B6E0","#FFC849","#25CDA5","#FA9B65","#D93C95","#845FD8","#3F8EEB","#58C8D8","#F35074","#6EA0DA"],T={red:"#E83562",orange:"#F38650",yellow:"#FBBC30",green:"#31FCB4",cyan:"#40F8FF",blue:"#279EFF",purple:"#B399FD",dark_purple:"#6D48D2",plum:"#C82184",pink:"#FC8497"},jr=[T.purple,T.dark_purple],Nr=[T.purple,T.pink,T.yellow,T.blue,T.red,T.cyan,T.orange,T.plum,T.green,T.dark_purple],M={green:"#B2DDC9",cyan:"#A2D5E2",blue:"#AAC4FF",purple:"#B2A4FF",plum:"#DCA8C7",pink:"#FFCCD3",red:"#FFADAD",orange:"#FFDEB4",yellow:"#FDF7C3"},kr=[M.green,M.purple,M.red,M.cyan,M.pink,M.blue,M.orange,M.plum,M.yellow],J={grey900:"#1c1917",grey800:"#292524",grey700:"#44403c",grey600:"#57534e",grey500:"#78716c",grey400:"#a8a29e",grey300:"#d6d3d1",grey200:"#e7e5e4",grey100:"#f5f5f4",grey50:"#fafaf9",red900:"#7f1d1d",red800:"#991b1b",red700:"#b91c1c",red600:"#dc2626",red500:"#ef4444",red400:"#f87171",red300:"#fca5a5",red200:"#fecaca",red100:"#fee2e2",red50:"#fef2f2",orange900:"#7c2d12",orange800:"#9a3412",orange700:"#c2410c",orange600:"#ea580c",orange500:"#f97316",orange400:"#fb923c",orange300:"#fdba74",orange200:"#fed7aa",orange100:"#ffedd5",orange50:"#fff7ed",yellow900:"#553B0C",yellow800:"#6F4B08",yellow700:"#8D6300",yellow600:"#BD8A00",yellow500:"#E5B400",yellow400:"#FFC800",yellow300:"#FBDA2B",yellow200:"#FEED72",yellow100:"#FEF8B4",yellow50:"#FEFCE2",green900:"#064e3b",green800:"#065f46",green700:"#047857",green600:"#059669",green500:"#10b981",green400:"#34d399",green300:"#6ee7b7",green200:"#a7f3d0",green100:"#d1fae5",green50:"#ecfdf5",cyan900:"#164e63",cyan800:"#155e75",cyan700:"#0e7490",cyan600:"#0891B2",cyan500:"#06b6d4",cyan400:"#22d3ee",cyan300:"#67e8f9",cyan200:"#a5f3fc",cyan100:"#cffafe",cyan50:"#ecfeff",blue900:"#1e3a8a",blue800:"#1e40af",blue700:"#1d4ed8",blue600:"#2563eb",blue500:"#3b82f6",blue400:"#60a5fa",blue300:"#93c5fd",blue200:"#bfdbfe",blue100:"#dbeafe",blue50:"#eff6ff",purple900:"#4c1d95",purple800:"#5b21b6",purple700:"#6d28d9",purple600:"#7c3aed",purple500:"#8b5cf6",purple400:"#a78bfa",purple300:"#c4b5fd",purple200:"#ddd6fe",purple100:"#ede9fe",purple50:"#f5f3ff",pink900:"#751A5E",pink800:"#8F1972",pink700:"#AF1C8A",pink600:"#D326A8",pink500:"#E845BF",pink400:"#F979D9",pink300:"#FCABE8",pink200:"#FED0F3",pink100:"#FFE8F9",pink50:"#FFF4FC"},Ir=[J.grey200,M.green,M.red,J.grey200],ge={dark:{1:[500],2:[600,400],3:[600,400,200],4:[600,500,300,100],5:[700,600,400,200,50],6:[600,500,400,300,200,100],7:[600,500,400,300,200,100,50],default:[700,600,500,400,300,200,100,50]},light:{1:[600],2:[700,500],3:[800,600,400],4:[800,600,400,300],5:[800,700,600,500,400],6:[800,700,600,500,400,300],7:[900,800,700,600,500,400,300],default:[900,800,700,600,500,400,300,200]}},O={cyan:"#22D3EE",pink:"#F377EF",purple:"#6528F7",red:"#FB2576",orange:"#FF9300",yellow:"#FBFF00",green:"#06FF00",blue:"#0079FF"},B=[O.cyan,O.pink,O.purple,O.red,O.orange,O.yellow,O.green,O.blue],Vr=[O.cyan,O.green,O.red,O.cyan],x={start:"#84D1FC",positive:"#84FC89",negative:"#FC8497",total:"#84D1FC"},Br=[x.start,x.positive,x.negative,x.total],xr={transform:"linear",reverse:!1,nice:!0,zero:!1,domainMin:null,domainMax:null,range:null,scheme:null,interpolate:"lab",domainMid:null,symmetric:!1},Ur={size:[4,20],alpha:[.1,1],strokeWidth:[1,4]},Yr={domainMin:null,domainMax:null,nice:!1,reverse:!1},zr={range:null,domain:null,padding:.1,reverse:!1},be={palette:{type:"default"}};function $r(e,t="light",r){return((r!==void 0?ge[t][r]:void 0)??ge[t].default).map(n=>J[`${e}${n}`])}function Wr(e){const t=B.indexOf(O[e]);return t<=0?B:[...B.slice(t),...B.slice(0,t)]}function Gr(e,t){switch(e.type){case"default":return se;case"graphy":return e.variant==="waterfall"?Br:Nr;case"pastel":return e.variant==="waterfall"?Ir:kr;case"neon":return e.variant==="waterfall"?Vr:Wr(e.base);case"mono":return $r(e.base,e.variant??"light",t);case"custom":return e.colors}}function Hr(e,t){if(!t)return e;const r=[...e];for(const[n,a]of Object.entries(t)){const o=Number(n);if(!Number.isInteger(o)||o<1)continue;const i=o-1;i<r.length&&(r[i]=a)}return r}function Kr(e,t,r,n){if(!t)return;const a=r?.type==="custom"?n[r.id]:void 0,o={};for(const[i,s]of Object.entries(t)){const l=Number(i);if(!(!Number.isInteger(l)||l<1)){if(s.hex!==void 0){o[l]=s.hex;continue}if(s.id!==void 0){const u=a?.find(m=>m.id===s.id)?.hex;u!==void 0?o[l]=u:e.diagnostics.addWarning({code:"PALETTE_NOT_FOUND",message:`Palette override at slot ${l} with id '${s.id}' did not resolve against the active palette — falling back to palette color.`,context:{requested:s.id,available:a?.map(m=>m.id)??[]},suggestion:"Define the override id in the active custom palette, or use a hex value instead."})}}}return Object.keys(o).length>0?o:void 0}function qr(e,t,r){if(!t)return be.palette;if(t.type==="custom"){const n=r[t.id];if(!n)return e.diagnostics.addWarning({code:"PALETTE_NOT_FOUND",message:`Custom palette with id "${t.id}" not found — falling back to the default palette.`,context:{requested:t.id,available:Object.keys(r)},suggestion:"Register the palette in customPalettes, or reference an existing palette id."}),be.palette;const a=n.map(o=>o.hex);return{type:"custom",id:t.id,colors:a}}return t}function h(e,t={}){const r=t;return{type:"scale",scaledAesthetic:e,scaleType:"continuous",transform:t.transform,reverse:t.reverse,nice:t.nice,zero:t.zero,clamp:t.clamp,domainMin:t.domainMin??null,domainMax:t.domainMax??null,range:t.range,scheme:r.scheme??null,interpolate:r.interpolate,domainMid:r.domainMid??null,symmetric:r.symmetric}}function U(e,t={}){return{type:"scale",scaledAesthetic:e,scaleType:"datetime",domainMin:t.domainMin??null,domainMax:t.domainMax??null,nice:t.nice,reverse:t.reverse,clamp:t.clamp}}function _(e,t={}){return{type:"scale",scaledAesthetic:e,scaleType:"discrete",range:t.range,domain:t.domain??null,padding:t.padding,reverse:t.reverse}}function C(e,t={}){return{type:"scale",scaledAesthetic:e,scaleType:"identity"}}function Y(e,t){return{type:"scale",scaledAesthetic:e,scaleType:"inferred",options:t}}function at(e,t={}){return{type:"scale",scaledAesthetic:e,scaleType:"palette",palette:t.palette,overrides:t.overrides}}var ot=["none","xs","sm","md","lg","xl","full"],Xr={point:Jr,line:Zr,area:en,bar:tn,rule:rn},Qr=e=>typeof e=="string"&&ot.includes(e);function R(e,t){return{type:"layer",id:t.id,geom:e,mapping:t.aes,stat:t.stat,params:t.params,position:t.position,yScaleType:t.yScaleType,transforms:t.transforms,interactive:t.interactive,dataLabels:t.dataLabels}}function Jr(e={}){return R("point",e)}function Zr(e={}){return R("line",e)}function en(e={}){return R("area",e)}function tn(e={}){return R("bar",e)}function rn(e={}){return R("rule",e)}var nn=["observation","category","aggregate"],an=["inside","outside"],on=["top","right","bottom","left"],sn=["heading","label","value","primaryRow"],ln=["dimmed","hovered"],un=e=>typeof e=="object"&&e!==null&&typeof e.light=="string"&&typeof e.dark=="string",cn=e=>typeof e=="object"&&e!==null&&typeof e.token=="string";function dn(e){return{type:"styles",...e}}function b(e){return{token:e}}var w=e=>{const t={...e?.where===void 0?{}:{where:e.where},...e?.state===void 0?{}:{state:e.state}};return{...e?.id===void 0?{}:{id:e.id},...Object.keys(t).length===0?{}:{when:t}}},L=e=>e?.layer===void 0?{}:{layer:e.layer},c=e=>e?.id===void 0?{}:{id:e.id},f={geom:Object.assign((e,t)=>({...w(t),select:{target:"geom",...L(t)},declarations:e}),{bar:(e,t)=>({...w(t),select:{target:"geom",kind:"bar",...L(t)},declarations:e}),line:(e,t)=>({...w(t),select:{target:"geom",kind:"line",...L(t)},declarations:e}),area:(e,t)=>({...w(t),select:{target:"geom",kind:"area",...L(t)},declarations:e}),point:(e,t)=>({...w(t),select:{target:"geom",kind:"point",...L(t)},declarations:e}),rule:Object.assign((e,t)=>({...w(t),select:{target:"geom",kind:"rule",...L(t)},declarations:e}),{label:(e,t)=>({...c(t),select:{target:"ruleLabel",...L(t)},declarations:e})})}),panelBorder:Object.assign((e,t)=>({...c(t),select:{target:"panelBorder"},declarations:e}),{top:(e,t)=>({...c(t),select:{target:"panelBorder",edge:"top"},declarations:e}),right:(e,t)=>({...c(t),select:{target:"panelBorder",edge:"right"},declarations:e}),bottom:(e,t)=>({...c(t),select:{target:"panelBorder",edge:"bottom"},declarations:e}),left:(e,t)=>({...c(t),select:{target:"panelBorder",edge:"left"},declarations:e})}),gridLine:Object.assign((e,t)=>({...c(t),select:{target:"gridLine"},declarations:e}),{x:(e,t)=>({...c(t),select:{target:"gridLine",axis:"x"},declarations:e}),y:(e,t)=>({...c(t),select:{target:"gridLine",axis:"y"},declarations:e})}),tickLine:Object.assign((e,t)=>({...c(t),select:{target:"tickLine"},declarations:e}),{x:(e,t)=>({...c(t),select:{target:"tickLine",axis:"x"},declarations:e}),y:(e,t)=>({...c(t),select:{target:"tickLine",axis:"y"},declarations:e})}),axisLabel:Object.assign((e,t)=>({...c(t),select:{target:"axisLabel"},declarations:e}),{x:(e,t)=>({...c(t),select:{target:"axisLabel",axis:"x"},declarations:e}),y:(e,t)=>({...c(t),select:{target:"axisLabel",axis:"y"},declarations:e})}),tickLabel:Object.assign((e,t)=>({...c(t),select:{target:"tickLabel"},declarations:e}),{x:(e,t)=>({...c(t),select:{target:"tickLabel",axis:"x"},declarations:e}),y:(e,t)=>({...c(t),select:{target:"tickLabel",axis:"y"},declarations:e})}),dataLabel:Object.assign((e,t)=>({...c(t),select:{target:"dataLabel"},declarations:e}),{observation:Object.assign((e,t)=>({...c(t),select:{target:"dataLabel",role:"observation"},declarations:e}),{inside:(e,t)=>({...c(t),select:{target:"dataLabel",role:"observation",position:"inside"},declarations:e}),outside:(e,t)=>({...c(t),select:{target:"dataLabel",role:"observation",position:"outside"},declarations:e})}),category:Object.assign((e,t)=>({...c(t),select:{target:"dataLabel",role:"category"},declarations:e}),{inside:(e,t)=>({...c(t),select:{target:"dataLabel",role:"category",position:"inside"},declarations:e}),outside:(e,t)=>({...c(t),select:{target:"dataLabel",role:"category",position:"outside"},declarations:e})}),aggregate:(e,t)=>({...c(t),select:{target:"dataLabel",role:"aggregate"},declarations:e})}),graph:(e,t)=>({...c(t),select:{target:"graph"},declarations:e}),tooltip:Object.assign((e,t)=>({...c(t),select:{target:"tooltip"},declarations:e}),{heading:(e,t)=>({...c(t),select:{target:"tooltip",part:"heading"},declarations:e}),label:(e,t)=>({...c(t),select:{target:"tooltip",part:"label"},declarations:e}),value:(e,t)=>({...c(t),select:{target:"tooltip",part:"value"},declarations:e}),primaryRow:(e,t)=>({...c(t),select:{target:"tooltip",part:"primaryRow"},declarations:e})})},it=se[0],fn=Object.freeze({light:"#1D2129",dark:"#FFFFFF"}),st="#ffffff",lt=.4,le=Object.freeze({light:"rgba(29, 33, 41, 0.1)",dark:"rgba(255, 255, 255, 0.1)"}),ut=le,yn=6,ct=Object.freeze({light:"#FFFFFF",dark:"#1A1A1A"}),dt=Object.freeze({light:"#000000",dark:"#FFFFFF"}),ft=Object.freeze({light:"rgba(0, 0, 0, 0.6)",dark:"rgba(255, 255, 255, 0.8)"}),mn=10,gn="sm",bn=1,pn=2,yt=.3,hn=8,vn={geomColor:it,ruleColor:fn,pointBorderColor:"#ffffff",hoverAffordanceColor:st,gridLineColor:le,tickLineColor:ut,graphBackground:ct,textPrimary:dt,textSecondary:ft,tooltipBackground:{light:"#FFFFFF",dark:"#353535"},tooltipBorderColor:{light:"rgba(29, 33, 41, 0.1)",dark:"#494949"},tooltipPrimaryRow:{light:"#F0F0F0",dark:"#494949"}},mt=[f.geom({color:b("geomColor"),alpha:1}),f.geom.bar({borderRadius:"sm",borderWidth:1}),f.geom.line({strokeWidth:2,lineType:"solid"}),f.geom.area({alpha:yt,strokeWidth:2,lineType:"solid",strokeAlpha:1}),f.geom.point({size:8,borderColor:b("pointBorderColor"),borderWidth:1}),f.geom.rule({color:b("ruleColor"),strokeWidth:1,lineType:"dashed"}),f.geom({alpha:lt},{state:"dimmed"}),f.geom.point({borderColor:b("hoverAffordanceColor")},{state:"hovered"}),f.geom.bar({borderColor:b("hoverAffordanceColor")},{state:"hovered"}),f.gridLine({color:b("gridLineColor"),strokeWidth:1,lineType:"dashed"}),f.tickLine({color:b("tickLineColor"),strokeWidth:1,lineType:"solid",length:6}),f.panelBorder({color:b("gridLineColor"),strokeWidth:1,lineType:"dashed",borderRadius:8}),f.graph({background:b("graphBackground"),borderWidth:0,borderRadius:8}),f.axisLabel({fontSize:12,fontWeight:500,lineHeight:1,textColor:b("textPrimary")}),f.tickLabel({fontSize:12,fontWeight:500,lineHeight:1,textColor:b("textSecondary"),offset:10}),f.geom.rule.label({fontSize:11,fontWeight:500,lineHeight:1}),f.dataLabel({fontSize:11,fontWeight:500,lineHeight:1,textColor:b("textPrimary"),paddingInline:6,paddingBlock:2,borderRadius:4}),f.dataLabel.aggregate({fontWeight:600,paddingInline:4,background:{light:"#FFFFFF",dark:"#000000"},borderColor:{light:"#CCCCCC",dark:"#494949"},borderWidth:1}),f.dataLabel.observation.inside({textColor:"#FFFFFF"}),f.dataLabel.category.inside({textColor:"#FFFFFF"}),f.dataLabel.observation.outside({background:{light:"rgba(0, 0, 0, 0.1)",dark:"rgba(255, 255, 255, 0.1)"}}),f.dataLabel.category.outside({background:{light:"rgba(0, 0, 0, 0.1)",dark:"rgba(255, 255, 255, 0.1)"}}),f.tooltip({background:b("tooltipBackground"),borderColor:b("tooltipBorderColor"),borderWidth:1,borderRadius:6,paddingBlock:8,paddingInline:10,shadow:{offsetX:0,offsetY:4,blur:12,color:"rgba(0, 0, 0, 0.18)"}}),f.tooltip.heading({fontSize:12,fontWeight:500,lineHeight:1.3,textColor:b("textPrimary")}),f.tooltip.label({fontSize:14,fontWeight:500,lineHeight:1.43,textColor:b("textSecondary")}),f.tooltip.value({fontSize:14,fontWeight:500,lineHeight:1.43,textColor:b("textPrimary")}),f.tooltip.primaryRow({background:b("tooltipPrimaryRow")})];for(const e of mt){Object.freeze(e.select);for(const t of Object.values(e.declarations))typeof t=="object"&&Object.freeze(t);Object.freeze(e.declarations),e.when!==void 0&&Object.freeze(e.when),Object.freeze(e)}var En=Object.freeze({tokens:Object.freeze(vn),defaults:Object.freeze(mt),overrides:Object.freeze([])}),gt=["grouped-bars","stacked-bars","lines"],bt={"grouped-bars":"dodge","stacked-bars":"stack",lines:null},On=e=>e==="identity"?"grouped-bars":gt.find(t=>bt[t]===e)??null,An={cartesian:(e={})=>({type:"coord",coordType:"cartesian",params:e}),flip:(e={})=>({type:"coord",coordType:"flip",params:e}),polar:(e={})=>({type:"coord",coordType:"polar",params:e})},Tn={x:Object.assign(e=>Y("x",e),{continuous:e=>h("x",e),discrete:e=>_("x",e),datetime:e=>U("x",e),log:e=>h("x",{...e,transform:"log"}),sqrt:e=>h("x",{...e,transform:"sqrt"})}),y:Object.assign(e=>Y("y",e),{continuous:e=>h("y",e),discrete:e=>_("y",e),datetime:e=>U("y",e),log:e=>h("y",{...e,transform:"log"}),sqrt:e=>h("y",{...e,transform:"sqrt"})}),ySecondary:Object.assign(e=>Y("ySecondary",e),{continuous:e=>h("ySecondary",e),discrete:e=>_("ySecondary",e),datetime:e=>U("ySecondary",e),log:e=>h("ySecondary",{...e,transform:"log"}),sqrt:e=>h("ySecondary",{...e,transform:"sqrt"})}),color:{continuous:e=>h("color",e),discrete:e=>_("color",e),palette:e=>at("color",e)},size:{continuous:e=>h("size",e),discrete:e=>_("size",e),identity:e=>C("size",e)},alpha:{continuous:e=>h("alpha",e),discrete:e=>_("alpha",e),identity:e=>C("alpha",e)},strokeWidth:{continuous:e=>h("strokeWidth",e),discrete:e=>_("strokeWidth",e),identity:e=>C("strokeWidth",e)},lineType:{discrete:e=>_("lineType",e),identity:e=>C("lineType",e)}},Mn={identity:Fn,count:Ln,smooth:_n,mean:Dn,sum:Sn};function _n(e){return{type:"smooth",method:e.method,order:e.order,bandwidth:e.bandwidth}}function Fn(){return{type:"identity"}}function Ln(){return{type:"count"}}function Dn(){return{type:"mean"}}function Sn(){return{type:"sum"}}var Pn={reshape:wn,filter:Rn,sort:Cn,aggregate:jn,constant:Nn};function wn(e={}){return{type:"transform",transformType:"reshape",options:e}}function Rn(e){return{type:"transform",transformType:"filter",options:e}}function Cn(e){return{type:"transform",transformType:"sort",options:e}}function jn(e){return{type:"transform",transformType:"aggregate",options:e}}function Nn(e){return{type:"transform",transformType:"constant",options:e}}function kn(e){const t=e.layout?.gaps;if(t===void 0)return e;const r={};for(const n of Object.keys(t)){const a=t[n];a!==void 0&&(r[n]=typeof a=="number"?{after:a}:a)}return{...e,layout:{...e.layout,gaps:r}}}function In(e){return{type:"config",config:kn(e)}}Object.defineProperty(exports,"BORDER_RADIUS_TOKENS",{enumerable:!0,get:function(){return ot}});Object.defineProperty(exports,"BUILTIN_STYLES",{enumerable:!0,get:function(){return En}});Object.defineProperty(exports,"COMBO_BAR_POSITIONS",{enumerable:!0,get:function(){return bt}});Object.defineProperty(exports,"COMBO_TYPES",{enumerable:!0,get:function(){return gt}});Object.defineProperty(exports,"CONSTANT_VARIABLES",{enumerable:!0,get:function(){return ee}});Object.defineProperty(exports,"CONTINUOUS_SCALE_DEFAULTS",{enumerable:!0,get:function(){return xr}});Object.defineProperty(exports,"ChronologicalDateManager",{enumerable:!0,get:function(){return Be}});Object.defineProperty(exports,"DATA_LABEL_POSITIONS",{enumerable:!0,get:function(){return an}});Object.defineProperty(exports,"DATA_LABEL_ROLES",{enumerable:!0,get:function(){return nn}});Object.defineProperty(exports,"DATETIME_SCALE_DEFAULTS",{enumerable:!0,get:function(){return Yr}});Object.defineProperty(exports,"DEFAULT_AREA_ALPHA",{enumerable:!0,get:function(){return yt}});Object.defineProperty(exports,"DEFAULT_BAR_BORDER_RADIUS",{enumerable:!0,get:function(){return gn}});Object.defineProperty(exports,"DEFAULT_BORDER_WIDTH",{enumerable:!0,get:function(){return bn}});Object.defineProperty(exports,"DEFAULT_COLOR_PALETTE",{enumerable:!0,get:function(){return se}});Object.defineProperty(exports,"DEFAULT_DIMMED_ALPHA",{enumerable:!0,get:function(){return lt}});Object.defineProperty(exports,"DEFAULT_GEOM_COLOR",{enumerable:!0,get:function(){return it}});Object.defineProperty(exports,"DEFAULT_GRAPH_BACKGROUND",{enumerable:!0,get:function(){return ct}});Object.defineProperty(exports,"DEFAULT_GRID_LINE_COLOR",{enumerable:!0,get:function(){return le}});Object.defineProperty(exports,"DEFAULT_HOVER_AFFORDANCE_COLOR",{enumerable:!0,get:function(){return st}});Object.defineProperty(exports,"DEFAULT_LOCALE",{enumerable:!0,get:function(){return ie}});Object.defineProperty(exports,"DEFAULT_POINT_SIZE",{enumerable:!0,get:function(){return hn}});Object.defineProperty(exports,"DEFAULT_RESHAPE_VALUE_NAME",{enumerable:!0,get:function(){return Ze}});Object.defineProperty(exports,"DEFAULT_SEQUENTIAL_RAMP",{enumerable:!0,get:function(){return jr}});Object.defineProperty(exports,"DEFAULT_STROKE_WIDTH",{enumerable:!0,get:function(){return pn}});Object.defineProperty(exports,"DEFAULT_TEXT_PRIMARY",{enumerable:!0,get:function(){return dt}});Object.defineProperty(exports,"DEFAULT_TEXT_SECONDARY",{enumerable:!0,get:function(){return ft}});Object.defineProperty(exports,"DEFAULT_TICK_LABEL_OFFSET",{enumerable:!0,get:function(){return mn}});Object.defineProperty(exports,"DEFAULT_TICK_LINE_COLOR",{enumerable:!0,get:function(){return ut}});Object.defineProperty(exports,"DEFAULT_TICK_LINE_LENGTH",{enumerable:!0,get:function(){return yn}});Object.defineProperty(exports,"DISCRETE_SCALE_DEFAULTS",{enumerable:!0,get:function(){return zr}});Object.defineProperty(exports,"DataCompiler",{enumerable:!0,get:function(){return Er}});Object.defineProperty(exports,"Dataset",{enumerable:!0,get:function(){return W}});Object.defineProperty(exports,"GROUP_VARIABLES",{enumerable:!0,get:function(){return ve}});Object.defineProperty(exports,"IS_DEV",{enumerable:!0,get:function(){return D}});Object.defineProperty(exports,"InternalError",{enumerable:!0,get:function(){return v}});Object.defineProperty(exports,"LAYER_LABEL_VARIABLES",{enumerable:!0,get:function(){return vt}});Object.defineProperty(exports,"MONO_BASES",{enumerable:!0,get:function(){return Rr}});Object.defineProperty(exports,"NEON_BASES",{enumerable:!0,get:function(){return Cr}});Object.defineProperty(exports,"NON_POSITION_RANGE_DEFAULTS",{enumerable:!0,get:function(){return Ur}});Object.defineProperty(exports,"PANEL_BORDER_EDGES",{enumerable:!0,get:function(){return on}});Object.defineProperty(exports,"POSITION_VARIABLES",{enumerable:!0,get:function(){return Ee}});Object.defineProperty(exports,"RULE_VARIABLES",{enumerable:!0,get:function(){return Te}});Object.defineProperty(exports,"Registry",{enumerable:!0,get:function(){return rt}});Object.defineProperty(exports,"STACK_VARIABLES",{enumerable:!0,get:function(){return Oe}});Object.defineProperty(exports,"STAT_VARIABLES",{enumerable:!0,get:function(){return te}});Object.defineProperty(exports,"STYLE_STATES",{enumerable:!0,get:function(){return ln}});Object.defineProperty(exports,"SUFFIX_MULTIPLIERS",{enumerable:!0,get:function(){return Re}});Object.defineProperty(exports,"Stage",{enumerable:!0,get:function(){return De}});Object.defineProperty(exports,"TOOLTIP_PARTS",{enumerable:!0,get:function(){return sn}});Object.defineProperty(exports,"TransformRegistry",{enumerable:!0,get:function(){return wr}});Object.defineProperty(exports,"UserInputError",{enumerable:!0,get:function(){return N}});Object.defineProperty(exports,"VISUAL_VARIABLES",{enumerable:!0,get:function(){return Ae}});Object.defineProperty(exports,"VizError",{enumerable:!0,get:function(){return ne}});Object.defineProperty(exports,"applyOverrides",{enumerable:!0,get:function(){return Hr}});Object.defineProperty(exports,"areDataValuesEqual",{enumerable:!0,get:function(){return wt}});Object.defineProperty(exports,"areMappingsEquivalent",{enumerable:!0,get:function(){return Lt}});Object.defineProperty(exports,"buildLayerInput",{enumerable:!0,get:function(){return R}});Object.defineProperty(exports,"config",{enumerable:!0,get:function(){return In}});Object.defineProperty(exports,"continuous",{enumerable:!0,get:function(){return h}});Object.defineProperty(exports,"coord",{enumerable:!0,get:function(){return An}});Object.defineProperty(exports,"createPerKeyMemo",{enumerable:!0,get:function(){return Fe}});Object.defineProperty(exports,"createSingleSlotMemo",{enumerable:!0,get:function(){return jt}});Object.defineProperty(exports,"datetime",{enumerable:!0,get:function(){return U}});Object.defineProperty(exports,"discrete",{enumerable:!0,get:function(){return _}});Object.defineProperty(exports,"extractConstantValue",{enumerable:!0,get:function(){return Me}});Object.defineProperty(exports,"extractVariableName",{enumerable:!0,get:function(){return re}});Object.defineProperty(exports,"geom",{enumerable:!0,get:function(){return Xr}});Object.defineProperty(exports,"getStableKey",{enumerable:!0,get:function(){return $}});Object.defineProperty(exports,"identity",{enumerable:!0,get:function(){return C}});Object.defineProperty(exports,"inferXVariable",{enumerable:!0,get:function(){return Mt}});Object.defineProperty(exports,"inferred",{enumerable:!0,get:function(){return Y}});Object.defineProperty(exports,"isBorderRadiusToken",{enumerable:!0,get:function(){return Qr}});Object.defineProperty(exports,"isCategoricalValueFormat",{enumerable:!0,get:function(){return Se}});Object.defineProperty(exports,"isCompilerCachingEnabled",{enumerable:!0,get:function(){return Ct}});Object.defineProperty(exports,"isCurrencyValueFormat",{enumerable:!0,get:function(){return kt}});Object.defineProperty(exports,"isDateWithoutYearValueFormat",{enumerable:!0,get:function(){return It}});Object.defineProperty(exports,"isDefined",{enumerable:!0,get:function(){return Z}});Object.defineProperty(exports,"isInternalVariable",{enumerable:!0,get:function(){return At}});Object.defineProperty(exports,"isLightDarkColor",{enumerable:!0,get:function(){return un}});Object.defineProperty(exports,"isLookupValueFormat",{enumerable:!0,get:function(){return ae}});Object.defineProperty(exports,"isNonEmptyArray",{enumerable:!0,get:function(){return pt}});Object.defineProperty(exports,"isNumericDataValue",{enumerable:!0,get:function(){return Pt}});Object.defineProperty(exports,"isNumericValueFormat",{enumerable:!0,get:function(){return Pe}});Object.defineProperty(exports,"isPlainObject",{enumerable:!0,get:function(){return ht}});Object.defineProperty(exports,"isStatVariable",{enumerable:!0,get:function(){return Tt}});Object.defineProperty(exports,"isStrictCategoricalDataValue",{enumerable:!0,get:function(){return St}});Object.defineProperty(exports,"isStrictNumericDataValue",{enumerable:!0,get:function(){return _e}});Object.defineProperty(exports,"isStrictTemporalDataValue",{enumerable:!0,get:function(){return z}});Object.defineProperty(exports,"isStyleTokenRef",{enumerable:!0,get:function(){return cn}});Object.defineProperty(exports,"isTemporalDataValue",{enumerable:!0,get:function(){return Dt}});Object.defineProperty(exports,"isTemporalValueFormat",{enumerable:!0,get:function(){return I}});Object.defineProperty(exports,"palette",{enumerable:!0,get:function(){return at}});Object.defineProperty(exports,"parseDataset",{enumerable:!0,get:function(){return nt}});Object.defineProperty(exports,"parseValue",{enumerable:!0,get:function(){return Ke}});Object.defineProperty(exports,"prefixInternalVariable",{enumerable:!0,get:function(){return y}});Object.defineProperty(exports,"readComboTypeOfBarPosition",{enumerable:!0,get:function(){return On}});Object.defineProperty(exports,"readFoldKeepVariables",{enumerable:!0,get:function(){return _t}});Object.defineProperty(exports,"readISOInstant",{enumerable:!0,get:function(){return er}});Object.defineProperty(exports,"readMainAxisVariable",{enumerable:!0,get:function(){return Ft}});Object.defineProperty(exports,"resolvePaletteConfig",{enumerable:!0,get:function(){return qr}});Object.defineProperty(exports,"resolvePaletteOverrides",{enumerable:!0,get:function(){return Kr}});Object.defineProperty(exports,"resolvePaletteRange",{enumerable:!0,get:function(){return Gr}});Object.defineProperty(exports,"resolveScaledAestheticVariable",{enumerable:!0,get:function(){return Ot}});Object.defineProperty(exports,"scale",{enumerable:!0,get:function(){return Tn}});Object.defineProperty(exports,"setCompilerCachingEnabled",{enumerable:!0,get:function(){return Rt}});Object.defineProperty(exports,"stat",{enumerable:!0,get:function(){return Mn}});Object.defineProperty(exports,"style",{enumerable:!0,get:function(){return f}});Object.defineProperty(exports,"styles",{enumerable:!0,get:function(){return dn}});Object.defineProperty(exports,"sumMemoStats",{enumerable:!0,get:function(){return Nt}});Object.defineProperty(exports,"toExplicitValueFormat",{enumerable:!0,get:function(){return Vt}});Object.defineProperty(exports,"token",{enumerable:!0,get:function(){return b}});Object.defineProperty(exports,"transform",{enumerable:!0,get:function(){return Pn}});