@platforma-sdk/model 1.33.2 → 1.33.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var ot=Object.defineProperty;var at=(t,e,n)=>e in t?ot(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var D=(t,e,n)=>at(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@milaboratories/pl-model-common"),Ie=require("canonicalize"),M=require("zod"),Ae=require("@milaboratories/pl-error-like");class Se extends Error{constructor(e,n){super(`${e.length}${n?"+":""} errors, first error: `+e[0].message),this.errors=e,this.moreErrors=n}}function Te(t){if(!t.ok)throw new Se(t.errors,t.moreErrors);return t.value}function lt(t){return new Proxy(t,{get(e,n){return Te(e[n])}})}function I(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null?Y(t):t}function W(t){return{type:"GetFromCtx",variable:t}}function ut(t){return{type:"Isolate",cfg:t}}const ct=W("$args"),dt=W("$it"),pt=W("$prod"),ft=W("$staging"),ht=W("$ui");function Y(t){return{type:"Immediate",value:t}}function he(t){const e={};for(const[n,r]of Object.entries(t))e[n]=I(r);return{type:"MakeObject",template:e}}function gt(...t){const e=[];for(const n of t)e.push(I(n));return{type:"MakeArray",template:e}}function Q(t,e){return{type:"GetJsonField",source:I(t),field:I(e)}}function mt(t,e,n="$it"){return{type:"MapRecordValues",source:t,mapping:e,itVar:n}}function yt(t,e,n="$it"){return{type:"MapArrayValues",source:t,mapping:e,itVar:n}}function bt(t){return{type:"Flatten",source:t}}function vt(t){return{type:"IsEmpty",arg:t}}function At(t){return{type:"Not",operand:t}}function Pt(t,e){return{type:"And",operand1:t,operand2:e}}function Ct(t,e){return{type:"Or",operand1:t,operand2:e}}function wt(t,e){return{type:"GetResourceField",source:I(t),field:I(e)}}function xt(){return function(t){return{type:"GetResourceValueAsJson",source:I(t)}}}function It(t,e,n="$it"){return{type:"MapResourceFields",source:t,mapping:e,itVar:n}}function St(t,e){return{type:"GetBlobContent",range:e,source:I(t)}}function Tt(t,e){return{type:"GetBlobContentAsString",range:e,source:I(t)}}function _t(){return function(t,e){return{type:"GetBlobContentAsJson",range:e,source:I(t)}}}function Lt(t){return{type:"GetDownloadedBlobContent",source:I(t)}}function Et(t){return{type:"GetOnDemandBlobContent",source:I(t)}}function Ot(t,e){return{type:"ExtractArchiveAndGetURL",format:e,source:I(t)}}function Rt(t){return{type:"GetImportProgress",source:I(t)}}function Dt(t,e){return{type:"GetLastLogs",source:I(t),lines:e}}function Ft(t,e){return{type:"GetProgressLog",source:I(t),patternToSearch:e}}function kt(t,e){return{type:"GetProgressLogWithInfo",source:I(t),patternToSearch:e}}function Nt(t){return{type:"GetLogHandle",source:I(t)}}function jt(){return typeof globalThis.getPlatforma<"u"||typeof globalThis.platforma<"u"}function _e(t){if(t&&typeof globalThis.getPlatforma=="function")return globalThis.getPlatforma(t);if(typeof globalThis.platforma<"u")return globalThis.platforma;throw new Error("Can't get platforma instance.")}function Kt(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx}function g(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx;throw new Error("Not in config rendering context")}function H(t,e){const n=Kt();if(n===void 0)return!1;if(t in n.callbackRegistry)throw new Error(`Callback with key ${t} already registered.`);return n.callbackRegistry[t]=e,!0}const ue=new Map;function Vt(t,e){t in g().callbackRegistry||(g().callbackRegistry[t]=n=>{for(const r of ue.get(t))r(n)},ue.set(t,[])),ue.get(t).push(e)}class T{constructor(e,n=r=>r){D(this,"isResolved",!1);D(this,"resolvedValue");this.handle=e,this.postProcess=n,Vt(e,r=>{this.resolvedValue=n(r),this.isResolved=!0})}map(e){return new T(this.handle,n=>e(this.postProcess(n)))}mapDefined(e){return new T(this.handle,n=>{const r=this.postProcess(n);return r?e(r):void 0})}toJSON(){return this.isResolved?this.resolvedValue:{__awaited_futures__:[this.handle]}}}function se(t,e){return t===void 0?void 0:e(t)}class E{constructor(e,n){this.handle=e,this.resolvePath=n}resolve(...e){const n=e.map(r=>({assertFieldType:"Input",...typeof r=="string"?{field:r}:r}));return this.resolveWithCommon({},...n)}resolveOutput(...e){const n=e.map(r=>({assertFieldType:"Output",...typeof r=="string"?{field:r}:r}));return this.resolveWithCommon({},...n)}resolveInput(...e){const n=e.map(r=>({assertFieldType:"Input",...typeof r=="string"?{field:r}:r}));return this.resolveWithCommon({},...n)}resolveAny(...e){return this.resolveWithCommon({},...e)}resolveWithCommon(e,...n){const r=[...this.resolvePath,...n.map(i=>typeof i=="string"?i:i.field)];return se(g().resolveWithCommon(this.handle,e,...n),i=>new E(i,r))}get resourceType(){return g().getResourceType(this.handle)}getInputsLocked(){return g().getInputsLocked(this.handle)}getOutputsLocked(){return g().getOutputsLocked(this.handle)}getIsReadyOrError(){return g().getIsReadyOrError(this.handle)}getIsFinal(){return g().getIsFinal(this.handle)}getError(){const e=[...this.resolvePath,"error"];return se(g().getError(this.handle),n=>new E(n,e))}listInputFields(){return g().listInputFields(this.handle)}listOutputFields(){return g().listOutputFields(this.handle)}listDynamicFields(){return g().listDynamicFields(this.handle)}getKeyValueBase64(e){return g().getKeyValueBase64(this.handle,e)}getKeyValueAsString(e){return g().getKeyValueAsString(this.handle,e)}getKeyValueAsJson(e){const n=this.getKeyValueAsString(e);if(n==null)throw new Error("Resource has no content.");return JSON.parse(n)}getDataBase64(){return g().getDataBase64(this.handle)}getDataAsString(){return g().getDataAsString(this.handle)}getDataAsJson(){const e=this.getDataAsString();if(e==null)throw new Error("Resource has no content.");return JSON.parse(e)}getPColumns(e=!1,n=""){const r=this.parsePObjectCollection(e,n);return r===void 0?void 0:Object.entries(r).map(([,s])=>{if(!u.isPColumn(s))throw new Error(`not a PColumn (kind = ${s.spec.kind})`);return s})}parsePObjectCollection(e=!1,n=""){const r=g().parsePObjectCollection(this.handle,e,n,...this.resolvePath);if(r===void 0)return;const i={};for(const[s,o]of Object.entries(r)){const a=[...this.resolvePath,s];i[s]=u.mapPObjectData(o,l=>new E(l,a))}return i}getFileContentAsBase64(e){return new T(g().getBlobContentAsBase64(this.handle,e))}getFileContentAsString(e){return new T(g().getBlobContentAsString(this.handle,e))}getFileContentAsJson(e){return new T(g().getBlobContentAsString(this.handle,e)).mapDefined(n=>JSON.parse(n))}getBlobContentAsBase64(){return this.getFileContentAsBase64()}getBlobContentAsString(){return this.getFileContentAsString()}getFileHandle(){return new T(g().getDownloadedBlobContentHandle(this.handle))}getDownloadedBlobHandle(){return this.getFileHandle()}getRemoteFileHandle(){return new T(g().getOnDemandBlobContentHandle(this.handle))}getOnDemandBlobHandle(){return this.getRemoteFileHandle()}extractArchiveAndGetURL(e){return new T(g().extractArchiveAndGetURL(this.handle,e))}getImportProgress(){return new T(g().getImportProgress(this.handle))}getLastLogs(e){return new T(g().getLastLogs(this.handle,e))}getProgressLog(e){return new T(g().getProgressLog(this.handle,e))}getProgressLogWithInfo(e){return new T(g().getProgressLogWithInfo(this.handle,e))}getLogHandle(){return new T(g().getLogHandle(this.handle))}allFieldsResolved(e="Input"){switch(e){case"Input":return this.getInputsLocked()&&this.listInputFields().every(n=>this.resolve({field:n,assertFieldType:"Input"})!==void 0);case"Output":return this.getOutputsLocked()&&this.listOutputFields().every(n=>this.resolve({field:n,assertFieldType:"Output"})!==void 0)}}mapFields(e,n){const{fieldType:r,requireLocked:i,skipUnresolved:s}={fieldType:"Input",requireLocked:!0,skipUnresolved:!1,...n},o=e;if(i&&(r==="Input"&&!this.getInputsLocked()||r==="Output"&&!this.getOutputsLocked()))return;let l=(r==="Input"?this.listInputFields():r==="Output"?this.listOutputFields():this.listDynamicFields()).map(c=>[c,this.resolve({field:c,assertFieldType:r})]);return s&&(l=l.filter(c=>c[1]!==void 0)),l.map(([c,f])=>o(c,f))}}const Le="staging",Ee="main",Jt={explicitColumnsSupport:!0,inlineColumnsSupport:!0,activeArgs:!0};function Oe(t){return typeof t=="object"&&t!==null&&"__awaited_futures__"in t}function de(t,e,n){if(e.has(n))return;if(e.add(n),typeof n==="object")if(Oe(n))n.__awaited_futures__.forEach(i=>t.add(i));else if(Array.isArray(n))for(const i of n)de(t,e,i);else for(const[,i]of Object.entries(n))i!==n&&de(t,e,i)}function $t(t){const e=new Set;return de(e,new Set,t),e}const Mt=Object.freeze(Object.defineProperty({__proto__:null,GlobalCfgRenderCtxFeatureFlags:Jt,MainAccessorName:Ee,StagingAccessorName:Le,getAllFutureAwaits:$t,isFutureAwait:Oe},Symbol.toStringTag,{value:"Module"})),Re="pl7.app/label",De="pl7.app/trace",Fe=M.z.object({type:M.z.string(),importance:M.z.number().optional(),id:M.z.string().optional(),label:M.z.string()}),ke=M.z.array(Fe),Ut=.001,Bt="__LABEL__",Pe="__LABEL__@1";function ge(t,e,n={}){const r=new Map,i=n.forceTraceElements!==void 0&&n.forceTraceElements.length>0?new Set(n.forceTraceElements):void 0,s=new Map,o=t.map(h=>{var S,F;const P=e(h);let d,m,w;"spec"in P&&typeof P.spec=="object"?(d=P.spec,m=P.prefixTrace,w=P.suffixTrace):d=P;const p=(S=d.annotations)==null?void 0:S[Re],C=(F=d.annotations)==null?void 0:F[De],y=(C?ke.safeParse(JSON.parse(C)).data:void 0)??[],v=[...m??[],...y,...w??[]];if(p!==void 0){const R={label:p,type:Bt,importance:-2};n.addLabelAsSuffix?v.push(R):v.splice(0,0,R)}const x=[],O=new Map;for(let R=v.length-1;R>=0;--R){const{type:G}=v[R],N=v[R].importance??0,V=(O.get(G)??0)+1;O.set(G,V);const k=`${G}@${V}`;s.set(k,(s.get(k)??0)+1),r.set(k,Math.max(r.get(k)??Number.NEGATIVE_INFINITY,N-(v.length-R)*Ut)),x.push({...v[R],fullType:k,occurrenceIndex:V})}return x.reverse(),{value:h,spec:d,label:p,fullTrace:x}}),a=[],l=[],c=[...r];c.sort(([,h],[,P])=>P-h);for(const[h]of c)h.endsWith("@1")||s.get(h)===t.length?a.push(h):l.push(h);const f=(h,P=!1)=>{const d=[];for(let m=0;m<o.length;m++){const w=o[m],p=w.fullTrace.filter(v=>h.has(v.fullType)||i&&i.has(v.type));if(p.length===0)if(P)d.push({label:"Unlabeled",value:w.value});else return;const C=p.map(v=>v.label),y=n.separator??" / ";d.push({label:C.join(y),value:w.value})}return d};if(a.length===0){if(l.length!==0)throw new Error("Non-empty secondary types list while main types list is empty.");return f(new Set(Pe),!0)}let b=0,A=-1;for(;b<a.length;){const h=new Set;n.includeNativeLabel&&h.add(Pe);for(let d=0;d<b;++d)h.add(a[d]);A>=0&&h.add(a[A]);const P=f(h);if(P!==void 0&&new Set(P.map(d=>d.label)).size===t.length)return P;A++,A>=a.length&&(b++,A=b)}return f(new Set([...a,...l]),!0)}const ne="PColumnData/",Z=ne+"ResourceMap",ee=ne+"Partitioned/ResourceMap",U=ne+"JsonPartitioned",K=ne+"BinaryPartitioned",Ne=ne+"Partitioned/",te=Ne+"JsonPartitioned",B=Ne+"BinaryPartitioned";function je(t,e,n,r=[],i){if(t===void 0)return!1;switch(t.resourceType.name){case Z:{let s=t.getInputsLocked();for(const o of t.listInputFields()){const a=t.resolve({field:o,assertFieldType:"Input"}),l=[...r,...JSON.parse(o)],c=a===void 0?void 0:e(a);c===void 0&&(s=!1),(c!==void 0||i)&&n.push({key:l,value:c})}return s}case ee:{let s=t.getInputsLocked();for(const o of t.listInputFields()){const a=t.resolve({field:o,assertFieldType:"Input"});if(a===void 0)s=!1;else{const l=[...r,...JSON.parse(o)],c=je(a,e,n,l,i);s=s&&c}}return s}default:throw new Error(`Unknown resource type: ${t.resourceType.name}`)}}function Wt(t,e,n=!1){const r=[];return{isComplete:je(t,e,r,[],n),data:r}}const pe=t=>{if(t.endsWith(".index"))return{baseKey:t.substring(0,t.length-6),type:"index"};if(t.endsWith(".values"))return{baseKey:t.substring(0,t.length-7),type:"values"};throw new Error(`key must ends on .index/.values for binary p-column, got: ${t}`)};function Ke(t){if(!t)return;const e=t.resourceType.name,n=t.getDataAsJson(),r=[];let i=0;switch(e){case Z:i=n.keyLength;break;case ee:i=n.partitionKeyLength+n.keyLength;break;case U:case K:i=n.partitionKeyLength;break;case B:case te:i=n.superPartitionKeyLength+n.partitionKeyLength;break}switch(e){case Z:case U:case K:for(let s of t.listInputFields()){e===K&&(s=pe(s).baseKey);const o=[...JSON.parse(s)];r.push(o)}break;case ee:case B:case te:for(const s of t.listInputFields()){const o=[...JSON.parse(s)],a=t.resolve({field:s,assertFieldType:"Input"});if(a!==void 0)for(let l of a.listInputFields()){e===B&&(l=pe(l).baseKey);const c=[...o,...JSON.parse(l)];r.push(c)}}break}return{data:r,keyLength:i}}function Gt(t){if(t.type!=="JsonPartitioned"&&t.type!=="BinaryPartitioned")throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${t.type}`);const{parts:e,partitionKeyLength:n}=t,r=[];for(let i=0;i<n;++i)r.push(new Set);for(const i of e){const s=i.key;if(s.length!==n)throw new Error(`Key length (${s.length}) does not match partition length (${n}) for key: ${JSON.stringify(s)}`);for(let o=0;o<n;++o)r[o].add(s[o])}return r.map(i=>Array.from(i.values()))}function Ve(t){if(t===void 0)return;if(u.isDataInfoEntries(t))return Gt(t);const e=Ke(t);if(!e)return;const{data:n,keyLength:r}=e,i=[];for(let s=0;s<r;++s)i.push(new Set);for(const s of n){if(s.length!==r)throw new Error("key length does not match partition length");for(let o=0;o<r;++o)i[o].add(s[o])}return i.map(s=>Array.from(s.values()))}function oe(t,e=[]){if(t===void 0||!t.getIsReadyOrError())return;const n=t.resourceType.name,r=t.getDataAsJson();if(e.length>0&&(n===te||n===B))throw new Error(`Unexpected nested super-partitioned resource: ${n}`);switch(n){case Z:case ee:throw new Error(`Only data columns are supported, got: ${n}`);case U:{if(typeof(r==null?void 0:r.partitionKeyLength)!="number")throw new Error(`Missing partitionKeyLength in metadata for ${n}`);const i=[];for(const s of t.listInputFields()){const o=t.resolve({field:s,assertFieldType:"Input"});if(o===void 0)return;const a=[...e,...JSON.parse(s)];i.push({key:a,value:o})}return{type:"JsonPartitioned",partitionKeyLength:r.partitionKeyLength,parts:i}}case K:{if(typeof(r==null?void 0:r.partitionKeyLength)!="number")throw new Error(`Missing partitionKeyLength in metadata for ${n}`);const i=[],s=new Map;for(const o of t.listInputFields()){const a=pe(o),l=t.resolve({field:o,assertFieldType:"Input"});if(l===void 0)return;let c=s.get(a.baseKey);c||(c={},s.set(a.baseKey,c)),a.type==="index"?c.index=l:c.values=l}for(const[o,a]of s.entries()){if(!a.index||!a.values)return;const l=[...e,...JSON.parse(o)];i.push({key:l,value:{index:a.index,values:a.values}})}return{type:"BinaryPartitioned",partitionKeyLength:r.partitionKeyLength,parts:i}}case te:{if(typeof(r==null?void 0:r.superPartitionKeyLength)!="number"||typeof(r==null?void 0:r.partitionKeyLength)!="number")throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${n}`);const i=r.superPartitionKeyLength+r.partitionKeyLength,s=[];for(const o of t.listInputFields()){const a=t.resolve({field:o,assertFieldType:"Input"});if(a===void 0)return;if(a.resourceType.name!==U)throw new Error(`Expected ${U} inside ${n}, but got ${a.resourceType.name}`);const l=oe(a,JSON.parse(o));if(l===void 0)return;if(l.type!=="JsonPartitioned")throw new Error(`Unexpected inner result type for ${n}: ${l.type}`);s.push(...l.parts)}return{type:"JsonPartitioned",partitionKeyLength:i,parts:s}}case B:{if(typeof(r==null?void 0:r.superPartitionKeyLength)!="number"||typeof(r==null?void 0:r.partitionKeyLength)!="number")throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${n}`);const i=r.superPartitionKeyLength+r.partitionKeyLength,s=[];for(const o of t.listInputFields()){const a=t.resolve({field:o,assertFieldType:"Input"});if(a===void 0)return;if(a.resourceType.name!==K)throw new Error(`Expected ${K} inside ${n}, but got ${a.resourceType.name}`);const l=oe(a,JSON.parse(o));if(l===void 0)return;if(l.type!=="BinaryPartitioned")throw new Error(`Unexpected inner result type for ${n}: ${l.type}`);s.push(...l.parts)}return{type:"BinaryPartitioned",partitionKeyLength:i,parts:s}}default:throw new Error(`Unknown resource type: ${n}`)}}function Je(t){if(t!==void 0){if(u.isDataInfoEntries(t))return t;if(u.isDataInfo(t))return u.dataInfoToEntries(t);if(t instanceof E)return oe(t);throw new Error(`Unexpected input type: ${typeof t}`)}}function $e(t,e){const n=[...e].sort((s,o)=>o[0]-s[0]);if(t.type==="JsonPartitioned"||t.type==="BinaryPartitioned"){const{partitionKeyLength:s}=t;for(const[o]of e)if(o>=s)throw new Error(`Can't filter on non-partitioned axis ${o}. Must be >= ${s}`)}else if(t.type==="Json"){const{keyLength:s}=t;for(const[o]of e)if(o>=s)throw new Error(`Can't filter on non-data axis ${o}. Must be >= ${s}`)}const r=s=>{for(const[o,a]of n)if(s[o]!==a)return!1;return!0},i=s=>{const o=[...s];for(const[a]of n)o.splice(a,1);return o};switch(t.type){case"Json":{const s=t.data.filter(o=>r(o.key)).map(o=>({key:i(o.key),value:o.value}));return{type:"Json",keyLength:t.keyLength-e.length,data:s}}case"JsonPartitioned":{const s=t.parts.filter(o=>r(o.key)).map(o=>({key:i(o.key),value:o.value}));return{type:"JsonPartitioned",partitionKeyLength:t.partitionKeyLength-e.length,parts:s}}case"BinaryPartitioned":{const s=t.parts.filter(o=>r(o.key)).map(o=>({key:i(o.key),value:o.value}));return{type:"BinaryPartitioned",partitionKeyLength:t.partitionKeyLength-e.length,parts:s}}}}class zt{constructor(e){this.columns=e}selectColumns(e){const n=typeof e=="function"?e:u.selectorsToPredicate(e);return this.columns.filter(r=>n(r.spec))}}function Ht(t){if(t)return t.map(e=>({type:`split:${u.canonicalizeAxisId(e.axisId)}`,label:e.label,importance:1e6}))}function qt(t){if(t)return t.map(e=>[e.axisIdx,e.value])}function Yt(t,e){if(!e||e.length===0)return t;const n=[...e].sort((r,i)=>r[0]-i[0]);return Ie({id:t,axisFilters:n})}function Ce(t){if(!t||typeof t!="object")return!1;const e=t,n=e.domain&&typeof e.domain=="object"&&Object.values(e.domain).some(i=>typeof i=="object"&&i!==null&&"anchor"in i),r=e.axes&&Array.isArray(e.axes)&&e.axes.some(i=>typeof i=="object"&&i!==null&&"anchor"in i);return!!e.domainAnchor||n||r}function Xt(t){if(typeof t!="object"||!("axes"in t)||t.axes===void 0)return[];const e=t.axes.map((n,r)=>typeof n=="object"&&"split"in n&&n.split===!0?r:-1).filter(n=>n!==-1);if(e.length>0&&t.partialAxesMatch!==void 0)throw new Error("Axis splitting is not supported when `partialAxesMatch` is defined.");return e.sort((n,r)=>n-r),e}class ae{constructor(){D(this,"defaultProviderStore",[]);D(this,"providers",[new zt(this.defaultProviderStore)]);D(this,"axisLabelProviders",[])}addColumnProvider(e){return this.providers.push(e),this}addAxisLabelProvider(e){return this.axisLabelProviders.push(e),this}addColumns(e){return this.defaultProviderStore.push(...e),this}addColumn(e){return this.defaultProviderStore.push(e),this}findLabels(e){for(const n of this.axisLabelProviders){const r=n.findLabels(e);if(r)return r}}getUniversalEntries(e,n){const{anchorCtx:r,labelOps:i,dontWaitAllData:s=!1,overrideLabelAnnotation:o=!1,exclude:a}=n??{},l={...o&&(i==null?void 0:i.includeNativeLabel)!==!1?{includeNativeLabel:!0}:{},...i??{}};let c=()=>!1;if(a){const d=(Array.isArray(a)?a:[a]).map(m=>{if(Ce(m)){if(!r)throw new Error("Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.");return u.selectorsToPredicate(u.resolveAnchors(r.anchors,m,n))}else return u.selectorsToPredicate(m)});c=m=>d.some(w=>w(m))}const f=typeof e=="function"?[e]:Array.isArray(e)?e:[e],b=[],A=new Set;for(const d of f){const m=Ce(d);let w;if(m){if(!r)throw new Error("Anchored selectors require an AnchoredIdDeriver to be provided in options.");w=u.resolveAnchors(r.anchors,d,n)}else w=d;const p=new Set,C=[];for(const x of this.providers){const O=x.selectColumns(w);for(const S of O){if(c(S.spec))continue;if(p.has(S.id))throw new Error(`Duplicate column id ${S.id} in provider ${x.constructor.name}`);const F=u.deriveNativeId(S.spec);A.has(F)||(p.add(S.id),A.add(F),C.push(S))}}if(C.length===0)continue;const y=Xt(d),v=y.length>0;for(const x of C){if(!u.isPColumnSpec(x.spec))continue;const O=x.spec;if(v){const S=Je(x.data);if(!S){if(s)continue;return}if(!u.isPartitionedDataInfoEntries(S))throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${S.type} for column ${x.id}`);const F=Ve(S),R=y[y.length-1];if(R>=S.partitionKeyLength)throw new Error(`Not enough partition keys (${S.partitionKeyLength}) for requested split axes (max index ${R}) in column ${O.name}`);const G=y.map(_=>this.findLabels(u.getAxisId(O.axesSpec[_]))),N=[],V=(_,z)=>{if(z>=y.length){if(N.push([..._]),N.length>1e4)throw new Error("Too many key combinations, aborting.");return}const j=y[z];if(j>=F.length)throw new Error(`Axis index ${j} out of bounds for unique keys array (length ${F.length}) during split key generation for column ${x.id}`);const J=F[j];if(!J||J.length===0){N.length=0;return}for(const re of J)_.push(re),V(_,z+1),_.pop()};if(V([],0),N.length===0)continue;const k=[...O.axesSpec],nt=y.map(_=>_);for(let _=y.length-1;_>=0;_--)k.splice(y[_],1);const rt={...O,axesSpec:k};for(const _ of N){const z=_.map((j,J)=>{const re=nt[J],it=u.getAxisId(O.axesSpec[re]),le=G[J],st=(le==null?void 0:le[j])??String(j);return{axisIdx:re,axisId:it,value:j,label:st}});b.push({type:"split",originalColumn:x,spec:O,adjustedSpec:rt,dataEntries:S,axisFilters:z})}}else b.push({type:"direct",originalColumn:x,spec:O,adjustedSpec:O})}}if(b.length===0)return[];const h=ge(b,d=>({spec:d.spec,suffixTrace:d.type==="split"?Ht(d.axisFilters):void 0}),l),P=[];for(const{value:d,label:m}of h){const{originalColumn:w,spec:p}=d,C=d.type==="split"?d.axisFilters:void 0,y=qt(C);let v;r?v=r.deriveS(p,y):v=Yt(w.id,y);let x={...d.adjustedSpec};o&&(x={...x,annotations:{...x.annotations??{},"pl7.app/label":m}}),P.push({id:v,spec:x,data:()=>d.type==="split"?u.entriesToDataInfo($e(d.dataEntries,y)):d.originalColumn.data,label:m})}return P}getColumns(e,n){const r=this.getUniversalEntries(e,{overrideLabelAnnotation:!0,...n??{}});if(!r)return;const i=[];for(const s of r){const o=s.data();if(!o){if(n!=null&&n.dontWaitAllData)continue;return}i.push({id:s.id,spec:s.spec,data:o})}return i}}function ce(t,e){if(t===void 0)return e===void 0;if(e===void 0)return!0;for(const n in e)if(t[n]!==e[n])return!1;return!0}function we(t){return u.mapPObjectData(t,e=>e instanceof E?e.handle:u.isDataInfo(e)?u.mapDataInfo(e,n=>n.handle):e)}class Me{constructor(){D(this,"ctx",g())}calculateOptions(e){return this.ctx.calculateOptions(e)}getOptions(e,n){const r=typeof e=="function"?e:u.selectorsToPredicate(e),i=this.getSpecs().entries.filter(a=>r(a.obj));let s={},o=!1;return typeof n<"u"&&(typeof n=="function"?s=n:typeof n=="object"&&("includeNativeLabel"in n||"separator"in n||"addLabelAsSuffix"in n?s=n:(n=n,s=n.label??{},o=n.refsWithEnrichments??!1))),typeof s=="object"?ge(i,a=>a.obj,s??{}).map(({value:{ref:a},label:l})=>({ref:u.withEnrichments(a,o),label:l})):i.map(({ref:a,obj:l})=>({ref:u.withEnrichments(a,o),label:s(l,a)}))}resolveAnchorCtx(e){if(e instanceof u.AnchoredIdDeriver)return e;const n={};for(const[r,i]of Object.entries(e))if(u.isPlRef(i)){const s=this.getPColumnSpecByRef(i);if(!s)return;n[r]=s}else n[r]=i;return new u.AnchoredIdDeriver(n)}getAnchoredPColumns(e,n,r){const i=this.resolveAnchorCtx(e);if(i)return new ae().addColumnProvider(this).addAxisLabelProvider(this).getColumns(n,{...r,anchorCtx:i})}getCanonicalOptions(e,n,r){const i=this.resolveAnchorCtx(e);if(!i)return;const s=new ae().addColumnProvider(this).addAxisLabelProvider(this).getUniversalEntries(n,{...r,anchorCtx:i});if(s)return s.map(o=>({value:o.id,label:o.label}))}getDataFromResultPool(){return this.getData()}getData(){const e=this.ctx.getDataFromResultPool();return{isComplete:e.isComplete,entries:e.entries.map(n=>({ref:n.ref,obj:{...n.obj,data:new E(n.obj.data,[n.ref.blockId,n.ref.name])}}))}}getDataWithErrorsFromResultPool(){return this.getDataWithErrors()}getDataWithErrors(){const e=this.ctx.getDataWithErrorsFromResultPool();return{isComplete:e.isComplete,entries:e.entries.map(n=>({ref:n.ref,obj:{...n.obj,data:u.mapValueInVOE(n.obj.data,r=>new E(r,[n.ref.blockId,n.ref.name]))}}))}}getSpecsFromResultPool(){return this.getSpecs()}getSpecs(){return this.ctx.getSpecsFromResultPool()}getDataByRef(e){var r;if(typeof this.ctx.getDataFromResultPoolByRef>"u")return(r=this.getData().entries.find(i=>i.ref.blockId===e.blockId&&i.ref.name===e.name))==null?void 0:r.obj;const n=this.ctx.getDataFromResultPoolByRef(e.blockId,e.name);if(n)return u.mapPObjectData(n,i=>new E(i,[e.blockId,e.name]))}getPColumnByRef(e){const n=this.getDataByRef(e);if(n)return u.ensurePColumn(n)}getPColumnSpecByRef(e){const n=this.getSpecByRef(e);if(n){if(!u.isPColumnSpec(n))throw new Error(`not a PColumn spec (kind = ${n.kind})`);return n}}getSpecByRef(e){return this.ctx.getSpecFromResultPoolByRef(e.blockId,e.name)}findDataWithCompatibleSpec(e){const n=[];e:for(const r of this.getData().entries){if(!u.isPColumnSpec(r.obj.spec))continue;const i=r.obj.spec;if(e.name===i.name&&e.valueType===i.valueType&&e.axesSpec.length===i.axesSpec.length&&ce(e.domain,i.domain)){for(let s=0;s<e.axesSpec.length;++s){const o=e.axesSpec[s],a=i.axesSpec[s];if(o.name!==a.name||o.type!==a.type||!ce(o.domain,a.domain))continue e}n.push(r.obj)}}return n}findLabels(e){const n=this.getData();for(const r of n.entries){if(!u.isPColumn(r.obj))continue;const i=r.obj.spec;if(i.name==="pl7.app/label"&&i.axesSpec.length===1&&i.axesSpec[0].name===e.name&&i.axesSpec[0].type===e.type&&ce(e.domain,i.axesSpec[0].domain)){if(r.obj.data.resourceType.name!=="PColumnData/Json")throw Error(`Expected JSON column for labels, got: ${r.obj.data.resourceType.name}`);return Object.fromEntries(Object.entries(r.obj.data.getDataAsJson().data).map(o=>[JSON.parse(o[0])[0],o[1]]))}}}selectColumns(e){const n=typeof e=="function"?e:u.selectorsToPredicate(e);return this.getSpecs().entries.filter(({obj:i})=>u.isPColumnSpec(i)?n(i):!1).map(({ref:i,obj:s})=>{const o=s;let a=null;const l=this;return{id:Ie(i),spec:o,get data(){var c;return a!==null||(a=(c=l.getPColumnByRef(i))==null?void 0:c.data),a}}})}findLabelsForColumnAxis(e,n){var s;const r=this.findLabels(e.axesSpec[n]);if(!r)return;const i=(s=e.annotations)==null?void 0:s["pl7.app/axisKeys/"+n];if(i!==void 0){const o=JSON.parse(i);return Object.fromEntries(o.map(a=>[a,r[a]??"Unlabelled"]))}else return r}}class q{constructor(){D(this,"ctx");D(this,"args");D(this,"uiState");D(this,"_activeArgsCache");D(this,"resultPool",new Me);this.ctx=g(),this.args=JSON.parse(this.ctx.args),this.uiState=this.ctx.uiState!==void 0?JSON.parse(this.ctx.uiState):{}}get activeArgs(){return this._activeArgsCache===void 0&&(this._activeArgsCache={v:this.ctx.activeArgs?JSON.parse(this.ctx.activeArgs):void 0}),this._activeArgsCache.v}getNamedAccessor(e){return se(this.ctx.getAccessorHandleByName(e),n=>new E(n,[e]))}get prerun(){return this.getNamedAccessor(Le)}get outputs(){return this.getNamedAccessor(Ee)}findLabels(e){return this.resultPool.findLabels(e)}verifyInlineAndExplicitColumnsSupport(e){var i;const n=e.some(s=>!(s.data instanceof E)||u.isDataInfo(s.data)),r=((i=this.ctx.featureFlags)==null?void 0:i.inlineColumnsSupport)===!0;if(n&&!r)throw Error("Inline or explicit columns not supported")}createPFrame(e){return this.verifyInlineAndExplicitColumnsSupport(e),this.ctx.createPFrame(e.map(n=>we(n)))}createPTable(e){let n;return"columns"in e?n={src:{type:"full",entries:e.columns.map(r=>({type:"column",column:r}))},filters:e.filters??[],sorting:e.sorting??[]}:n=e,this.verifyInlineAndExplicitColumnsSupport(u.extractAllColumns(n.src)),this.ctx.createPTable(u.mapPTableDef(n,r=>we(r)))}getBlockLabel(e){return this.ctx.getBlockLabel(e)}getCurrentUnstableMarker(){return this.ctx.getCurrentUnstableMarker()}logInfo(e){this.ctx.logInfo(e)}logWarn(e){this.ctx.logWarn(e)}logError(e){this.ctx.logError(e)}}const X="1.33.2";function Ue(t){return t.__renderLambda===!0}function ie(t){if(t!==void 0)return Ue(t)?t.handle:t}function $(t){if(t!==void 0)return typeof t=="string"?{__renderLambda:!0,handle:t,retentive:!1}:t}function Qt(t){if(t.v3!==void 0){const{initialArgs:e,initialUiState:n,inputsValid:r,outputs:i,renderingMode:s,sdkVersion:o,sections:a,title:l,enrichmentTargets:c}=t.v3,{code:f}=t;return{initialArgs:e,initialUiState:n,inputsValid:r,outputs:i,renderingMode:s,sdkVersion:o,sections:a,title:l,code:f,enrichmentTargets:c}}else if(t.inputsValid!==void 0){const{sdkVersion:e,renderingMode:n,outputs:r,inputsValid:i,sections:s,initialArgs:o,code:a}=t,l=Object.keys(t);if(e===void 0||n===void 0||r===void 0||i===void 0||s===void 0||o===void 0)throw new Error(`Malformed config v2. SDK version ${e}; Fields = ${l.join(", ")}`);return{sdkVersion:e,renderingMode:n,initialArgs:o,outputs:Object.fromEntries(Object.entries(r).map(([c,f])=>[c,$(f)])),inputsValid:$(i),sections:$(s),initialUiState:void 0,code:a}}else if(t.renderingMode!==void 0){const{sdkVersion:e,canRun:n,renderingMode:r,outputs:i,sections:s,initialArgs:o,code:a}=t,l=Object.keys(t);if(r===void 0||i===void 0||n===void 0||s===void 0||o===void 0)throw new Error(`Malformed config v1. SDK version ${e}; Fields = ${l.join(", ")}`);return{sdkVersion:e??"unknown",renderingMode:r,initialArgs:o,outputs:Object.fromEntries(Object.entries(i).map(([c,f])=>[c,$(f)])),inputsValid:$(n),sections:$(s),initialUiState:void 0,code:a}}else{const{sdkVersion:e}=t,n=Object.keys(t);throw new Error(`Config format not supported: SDK = ${e}; Fields = ${n.join(", ")}`)}}class L{constructor(e,n,r,i,s,o,a,l){this._renderingMode=e,this._initialArgs=n,this._initialUiState=r,this._outputs=i,this._inputsValid=s,this._sections=o,this._title=a,this._enrichmentTargets=l}static create(e="Heavy"){return new L(e,void 0,{},{},Y(!0),Y([]),void 0,void 0)}output(e,n,r={}){if(typeof n=="function"){const i=`output#${e}`;return H(i,()=>n(new q)),new L(this._renderingMode,this._initialArgs,this._initialUiState,{...this._outputs,[e]:{__renderLambda:!0,handle:i,...r}},this._inputsValid,this._sections,this._title,this._enrichmentTargets)}else return new L(this._renderingMode,this._initialArgs,this._initialUiState,{...this._outputs,[e]:n},this._inputsValid,this._sections,this._title,this._enrichmentTargets)}retentiveOutput(e,n){return this.output(e,n,{retentive:!0})}argsValid(e){return typeof e=="function"?(H("inputsValid",()=>e(new q)),new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,{__renderLambda:!0,handle:"inputsValid"},this._sections,this._title,this._enrichmentTargets)):new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,e,this._sections,this._title,this._enrichmentTargets)}sections(e){return Array.isArray(e)?this.sections(Y(e)):typeof e=="function"?(H("sections",()=>e(new q)),new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,{__renderLambda:!0,handle:"sections"},this._title,this._enrichmentTargets)):new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,e,this._title,this._enrichmentTargets)}title(e){return H("title",()=>e(new q)),new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,this._sections,{__renderLambda:!0,handle:"title"},this._enrichmentTargets)}initialArgs(e){return new L(this._renderingMode,e,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}withArgs(e){return new L(this._renderingMode,e,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}withUiState(e){return new L(this._renderingMode,this._initialArgs,e,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}enriches(e){return H("enrichmentTargets",e),new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,{__renderLambda:!0,handle:"enrichmentTargets"})}done(){if(this._initialArgs===void 0)throw new Error("Initial arguments not set.");const e={v3:{sdkVersion:X,renderingMode:this._renderingMode,initialArgs:this._initialArgs,initialUiState:this._initialUiState,inputsValid:this._inputsValid,sections:this._sections,title:this._title,outputs:this._outputs,enrichmentTargets:this._enrichmentTargets},sdkVersion:X,renderingMode:this._renderingMode,initialArgs:this._initialArgs,inputsValid:ie(this._inputsValid),sections:ie(this._sections),outputs:Object.fromEntries(Object.entries(this._outputs).map(([n,r])=>[n,ie(r)]))};return jt()?_e({sdkVersion:X}):{config:e}}}const Zt=(t,e)=>{let n=t.toString();return e==null||e.forEach(r=>{if(r)for(const[i,s]of Object.entries(r))n+=i,n+=s}),n};function en(t){if(!t.length)return[];let e=[[]];return t.forEach(n=>{const r=[];n.forEach(i=>{r.push(...e.map(s=>[...s,i]))}),e=r}),e}function Be(t){var e;return t.axesSpec.length===2&&((e=t.annotations)==null?void 0:e[He])==="true"}function We(t){var n,r;const e=new Map;for(const{id:i,spec:s}of t){const[o,a]=s.axesSpec.map(u.getAxisId).map(u.canonicalizeJson);e.has(o)||e.set(o,new Map),e.has(a)||e.set(a,new Map),(n=e.get(o))==null||n.set(a,{columnId:i,spec:s}),(r=e.get(a))==null||r.set(o,{columnId:i,spec:s})}return e}function me(t,e,n){var l;const i=[...t.keys()].map(u.parseJson).find(c=>u.matchAxisId(e,c));if(!i)return!1;const s=u.canonicalizeJson(u.getAxisId(i)),o=new Set([s]);let a=[s];for(;a.length;){const c=[];for(const f of a)for(const b of((l=t.get(f))==null?void 0:l.keys())??[]){const A=u.parseJson(b);if(u.matchAxisId(n,A))return!0;o.has(b)||(c.push(b),o.add(b))}a=c}return!1}function tn(t,e,n){const r=t.axesSpec.map(u.getAxisId),i=e.axesSpec.map(u.getAxisId);return i.some(s=>r.some(o=>u.matchAxisId(o,s)&&u.matchAxisId(s,o)))||!!n&&i.some(s=>r.some(o=>me(n,o,s)))}function Ge(t,e,n){const r=t.axesSpec.map(u.getAxisId),i=e.axesSpec.map(u.getAxisId);return i.some(s=>r.some(o=>u.matchAxisId(o,s)))||!!n&&i.some(s=>r.some(o=>me(n,o,s)))}const ze="pl7.app/graph/isVirtual",fe="pl7.app/label",He="pl7.app/isLinkerColumn";function xe(t,e,n){const r=t.spec.axesSpec.map(u.getAxisId),i=e.spec.axesSpec.map(u.getAxisId);if(tn(t.spec,e.spec,n))return[];if(!Ge(t.spec,e.spec,n))return[];const a=i.map(A=>r.filter(h=>u.matchAxisId(h,A))),l=en(a),c=new Set,f=new Set,b=l.map(A=>{const h=new Set;return A.map((P,d)=>{const m=e.spec.axesSpec[d].domain,w=P.domain;return Object.entries(w??{}).forEach(([p,C])=>{if((m==null?void 0:m[p])===void 0){const y=JSON.stringify([p,C]);h.add(y),c.add(y)}}),{...P,annotations:e.spec.axesSpec[d].annotations}}),h});return[...c].forEach(A=>{b.some(h=>!h.has(A))&&f.add(A)}),l.map((A,h)=>{var p;const P=Zt(e.id,A.map(C=>C.domain)),d=((p=e.spec.annotations)==null?void 0:p[fe])??"",m=[...b[h]].filter(C=>f.has(C)).sort().map(C=>{var y;return(y=JSON.parse(C))==null?void 0:y[1]}).join(" / "),w={...e.spec.annotations,[ze]:"true"};return(d||m)&&(w[fe]=d&&m?d+" / "+m:d+m),{id:P,spec:{...e.spec,axesSpec:A.map((C,y)=>({...C,annotations:e.spec.axesSpec[y].annotations})),annotations:w},data:e.data}})}function nn(t,e=new Map){const n=[];for(let r=0;r<t.length;r++)for(let i=r+1;i<t.length;i++){const s=t[r],o=t[i];n.push(...xe(s,o,e),...xe(o,s,e))}return n}function qe(t,e,n=[],r=new Map){const i=new Set,s=new Map;t.forEach(a=>{i.add(a.id),s.set(u.canonicalizeJson(u.getPColumnSpecId(a.spec)),a)});const o=new Map;for(const a of e){if(i.has(a.id))continue;const l=u.canonicalizeJson(u.getPColumnSpecId(a.spec));if(!s.has(l)){for(const c of s.values())if(Ge(c.spec,a.spec,r)){o.set(l,a);break}}}for(const a of n){if(i.has(a.id))continue;const l=u.canonicalizeJson(u.getPColumnSpecId(a.spec));s.has(l)||o.has(l)||(i.add(a.id),s.set(l,a))}return[...s.values(),...o.values()]}function rn(t,e){if(!e)return;const n=t.resultPool.getData().entries.map(l=>l.obj).filter(u.isPColumn),i=[...e,...n].filter(l=>Be(l.spec)),s=We(i),a=[...qe(e,n,i,s)];if(!a.some(l=>l.data instanceof E&&!l.data.getIsReadyOrError()))return t.createPFrame(a)}function sn(t){const e=t.type;switch(e){case"axis":return u.canonicalizeJson(t);case"column":return u.canonicalizeJson(t);default:throw Error(`unsupported column type: ${e}`)}}function Ye(t){return t.axesSpec.length===1&&t.name==="pl7.app/label"}function ye(t){return new ae().addAxisLabelProvider(t).addColumnProvider(t).getColumns({name:"pl7.app/label",axes:[{}]},{dontWaitAllData:!0})}function be(t,e){const n=[],r=[];for(const a of t)Ye(a.spec)?n.push(a):r.push(a);const i=[];for(const a of r)for(const l of a.spec.axesSpec){const c=u.getAxisId(l);i.some(f=>u.matchAxisId(f,c))||i.push(c)}for(const a of n){const l=u.getAxisId(a.spec.axesSpec[0]),c=i.findIndex(f=>u.matchAxisId(f,l));c!==-1&&i.splice(c,1)}const s=(a,l)=>{let c=a.toString();if(l)for(const f in l)c+=f,c+=l[f];return c},o=[];for(const a of e){const l=a.spec.axesSpec[0],c=u.getAxisId(l),f=i.findIndex(b=>u.matchAxisId(b,c));if(f!==-1){const b=i[f],A=Object.keys(b.domain??{}).length,h=Object.keys(l.domain??{}).length;A>h?o.push({id:s(a.id,b.domain),spec:{...a.spec,axesSpec:[{...b,annotations:l.annotations}]},data:a.data}):o.push(a),i.splice(f,1)}}return o}function ve(t){const e=i=>Array.isArray(i),n=i=>i instanceof E,r=i=>typeof i=="object"&&"type"in i;return t.map(i=>i.data).every(i=>{if(e(i))return!0;if(n(i))return i.getIsReadyOrError();if(r(i))switch(i.type){case"Json":return!0;case"JsonPartitioned":return Object.values(i.parts).every(o=>o.getIsReadyOrError());case"BinaryPartitioned":return Object.values(i.parts).every(o=>o.index.getIsReadyOrError()&&o.values.getIsReadyOrError())}else throw Error(`unsupported column data type: ${i}`)})}function Xe(t,e,n,r,i,s){let o=t;const a=[];if(s){o=[];for(const l of t)s(l.spec)?o.push(l):a.push(l)}return a.push(...e),{src:{type:"outer",primary:{type:n,entries:o.map(l=>({type:"column",column:l}))},secondary:a.map(l=>({type:"column",column:l}))},filters:r,sorting:i}}function on(t,e,n,r){var c,f;Array.isArray(r)&&(r={filters:r});const i=(r==null?void 0:r.coreJoinType)??"full",s=[...(r==null?void 0:r.filters)??[],...((c=n==null?void 0:n.pTableParams)==null?void 0:c.filters)??[]],o=((f=n==null?void 0:n.pTableParams)==null?void 0:f.sorting)??[],a=ye(t.resultPool);if(!a)return;const l=be(e.map(u.getColumnIdAndSpec),a);if(ve([...e,...l]))return t.createPTable(Xe(e,l,i,s,o,r==null?void 0:r.coreColumnPredicate))}function Qe(t){var e;return((e=t.annotations)==null?void 0:e["pl7.app/table/visibility"])==="hidden"}function Ze(t){var e;return((e=t.annotations)==null?void 0:e["pl7.app/table/visibility"])==="optional"}function an(t,e,n,r,i){var m,w;const s=(i==null?void 0:i.coreJoinType)??"full",o=[...(i==null?void 0:i.filters)??[],...((m=r==null?void 0:r.pTableParams)==null?void 0:m.filters)??[]],a=((w=r==null?void 0:r.pTableParams)==null?void 0:w.sorting)??[],l=e.filter(p=>!Qe(p.spec)),c=l.find(p=>n(p.spec));if(!c)return;const f=ye(t.resultPool);if(!f)return;const b=new Set((()=>{var C,y;if(s==="inner")return[];const p=(y=(C=r==null?void 0:r.gridState.columnVisibility)==null?void 0:C.hiddenColIds)==null?void 0:y.map(u.parseJson).filter(v=>v.type==="column").map(v=>v.id);return p||l.filter(v=>Ze(v.spec)).map(v=>v.id)})());b.delete(c.id),[...o.map(p=>p.column),...a.map(p=>p.column)].filter(p=>p.type==="column").map(p=>b.delete(p.id));const A=l.filter(p=>!b.has(p.id)),h=be(A.map(u.getColumnIdAndSpec),f),P=[...c.spec.axesSpec.map(p=>({type:"axis",id:u.getAxisId(p),spec:p})),...[...l,...h].map(p=>({type:"column",id:p.id,spec:p.spec}))];if(!ve([...A,...h]))return;const d=t.createPTable(Xe(l,h,s,o,a,i==null?void 0:i.coreColumnPredicate));return{tableSpec:P,tableHandle:d}}function ln(t,e,n){const r=t.resultPool.findLabels(e);return{axis:e,options:n.map(i=>({value:i,label:(r==null?void 0:r[i])??i.toString()})),defaultValue:n[0]}}function un(t){const e=t.type;switch(e){case"axis":return u.canonicalizeJson(t);case"column":return u.canonicalizeJson(t);default:throw Error(`unsupported column type: ${e}`)}}function cn(t,e,n,r){if(!(!e||e.axesSpec.length===0))return{id:t,spec:{kind:"PColumn",valueType:"Int",name:"pl7.app/table/row-selection",axesSpec:e.axesSpec,...r&&{domain:r},annotations:{"pl7.app/label":n??"Selected rows","pl7.app/discreteValues":"[1]"}},data:e.selectedKeys.filter(i=>!i.some(s=>u.isPTableAbsent(s))).map(i=>({key:i,val:1}))}}function dn(t){return t===u.PTableNA?(console.error("Axis value can never be N/A"),""):t}class pn{constructor(e){this.handle=e}async findColumns(e){return await platforma.pFrameDriver.findColumns(this.handle,e)}async getColumnSpec(e){return await platforma.pFrameDriver.getColumnSpec(this.handle,e)}async listColumns(){return await platforma.pFrameDriver.listColumns(this.handle)}async calculateTableData(e,n){return await platforma.pFrameDriver.calculateTableData(this.handle,e,n)}async getUniqueValues(e){return await platforma.pFrameDriver.getUniqueValues(this.handle,e)}}function et(t){return he({__isRef:!0,blockId:Q(t,"blockId"),name:Q(t,"name")})}function fn(t){return he({ref:et(Q(t,"ref")),label:Q(t,"label")})}const hn={sdkVersion:X};function tt(){return _e({sdkVersion:X})}function gn(t){try{return tt()}catch{return t}}function mn(t){if(typeof globalThis.getEnvironmentValue=="function")return globalThis.getEnvironmentValue(t)}exports.Args=ct;exports.BlockModel=L;exports.CurrentSdkInfo=hn;exports.FutureRef=T;exports.IS_VIRTUAL_COLUMN=ze;exports.It=dt;exports.JsRenderInternal=Mt;exports.LABEL_ANNOTATION=fe;exports.LINKER_COLUMN_ANNOTATION=He;exports.MainOutputs=pt;exports.OutputError=Se;exports.PAnnotationLabel=Re;exports.PAnnotationTrace=De;exports.PColumnCollection=ae;exports.PFrameImpl=pn;exports.RT_BINARY_PARTITIONED=K;exports.RT_BINARY_SUPER_PARTITIONED=B;exports.RT_JSON_PARTITIONED=U;exports.RT_JSON_SUPER_PARTITIONED=te;exports.RT_RESOURCE_MAP=Z;exports.RT_RESOURCE_MAP_PARTITIONED=ee;exports.RenderCtx=q;exports.ResultPool=Me;exports.StagingOutputs=ft;exports.Trace=ke;exports.TraceEntry=Fe;exports.TreeNodeAccessor=E;exports.UiState=ht;exports.allColumnsComputed=ve;exports.and=Pt;exports.convertOrParsePColumnData=Je;exports.createPFrameForGraphs=rn;exports.createPlDataTable=on;exports.createPlDataTableSheet=ln;exports.createPlDataTableV2=an;exports.createRowSelectionColumn=cn;exports.deriveLabels=ge;exports.downgradeCfgOrLambda=ie;exports.enrichColumnsWithCompatible=qe;exports.extractArchiveAndGetURL=Ot;exports.extractConfig=Qt;exports.filterDataInfoEntries=$e;exports.flatten=bt;exports.fromPlOption=fn;exports.fromPlRef=et;exports.getAdditionalColumns=nn;exports.getAllLabelColumns=ye;exports.getBlobContent=St;exports.getBlobContentAsJson=_t;exports.getBlobContentAsString=Tt;exports.getDownloadedBlobContent=Lt;exports.getEnvironmentValue=mn;exports.getFromCfg=W;exports.getImmediate=Y;exports.getImportProgress=Rt;exports.getJsonField=Q;exports.getLastLogs=Dt;exports.getLinkerColumnsMap=We;exports.getLogHandle=Nt;exports.getMatchingLabelColumns=be;exports.getOnDemandBlobContent=Et;exports.getPartitionKeysList=Ke;exports.getPlatformaOrDefault=gn;exports.getProgressLog=Ft;exports.getProgressLogWithInfo=kt;exports.getRawPlatformaInstance=tt;exports.getResourceField=wt;exports.getResourceValueAsJson=xt;exports.getUniquePartitionKeys=Ve;exports.hasPathWithLinkerColumns=me;exports.ifDef=se;exports.isColumnHidden=Qe;exports.isColumnOptional=Ze;exports.isConfigLambda=Ue;exports.isEmpty=vt;exports.isLabelColumn=Ye;exports.isLinkerColumn=Be;exports.isolate=ut;exports.makeArray=gt;exports.makeObject=he;exports.mapArrayValues=yt;exports.mapPTableValueToAxisKey=dn;exports.mapRecordValues=mt;exports.mapResourceFields=It;exports.not=At;exports.or=Ct;exports.parsePColumnData=oe;exports.parseResourceMap=Wt;exports.readOutput=Te;exports.stringifyPTableColumnId=un;exports.stringifyPTableColumnSpec=sn;exports.wrapOutputs=lt;Object.keys(u).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>u[t]})});Object.keys(Ae).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>Ae[t]})});
1
+ "use strict";var ot=Object.defineProperty;var at=(t,e,n)=>e in t?ot(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var D=(t,e,n)=>at(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@milaboratories/pl-model-common"),Ie=require("canonicalize"),M=require("zod"),Ae=require("@milaboratories/pl-error-like");class Se extends Error{constructor(e,n){super(`${e.length}${n?"+":""} errors, first error: `+e[0].message),this.errors=e,this.moreErrors=n}}function Te(t){if(!t.ok)throw new Se(t.errors,t.moreErrors);return t.value}function lt(t){return new Proxy(t,{get(e,n){return Te(e[n])}})}function I(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null?Y(t):t}function W(t){return{type:"GetFromCtx",variable:t}}function ut(t){return{type:"Isolate",cfg:t}}const ct=W("$args"),dt=W("$it"),pt=W("$prod"),ft=W("$staging"),ht=W("$ui");function Y(t){return{type:"Immediate",value:t}}function he(t){const e={};for(const[n,r]of Object.entries(t))e[n]=I(r);return{type:"MakeObject",template:e}}function gt(...t){const e=[];for(const n of t)e.push(I(n));return{type:"MakeArray",template:e}}function Q(t,e){return{type:"GetJsonField",source:I(t),field:I(e)}}function mt(t,e,n="$it"){return{type:"MapRecordValues",source:t,mapping:e,itVar:n}}function yt(t,e,n="$it"){return{type:"MapArrayValues",source:t,mapping:e,itVar:n}}function bt(t){return{type:"Flatten",source:t}}function vt(t){return{type:"IsEmpty",arg:t}}function At(t){return{type:"Not",operand:t}}function Pt(t,e){return{type:"And",operand1:t,operand2:e}}function Ct(t,e){return{type:"Or",operand1:t,operand2:e}}function wt(t,e){return{type:"GetResourceField",source:I(t),field:I(e)}}function xt(){return function(t){return{type:"GetResourceValueAsJson",source:I(t)}}}function It(t,e,n="$it"){return{type:"MapResourceFields",source:t,mapping:e,itVar:n}}function St(t,e){return{type:"GetBlobContent",range:e,source:I(t)}}function Tt(t,e){return{type:"GetBlobContentAsString",range:e,source:I(t)}}function _t(){return function(t,e){return{type:"GetBlobContentAsJson",range:e,source:I(t)}}}function Lt(t){return{type:"GetDownloadedBlobContent",source:I(t)}}function Et(t){return{type:"GetOnDemandBlobContent",source:I(t)}}function Ot(t,e){return{type:"ExtractArchiveAndGetURL",format:e,source:I(t)}}function Rt(t){return{type:"GetImportProgress",source:I(t)}}function Dt(t,e){return{type:"GetLastLogs",source:I(t),lines:e}}function Ft(t,e){return{type:"GetProgressLog",source:I(t),patternToSearch:e}}function kt(t,e){return{type:"GetProgressLogWithInfo",source:I(t),patternToSearch:e}}function Nt(t){return{type:"GetLogHandle",source:I(t)}}function jt(){return typeof globalThis.getPlatforma<"u"||typeof globalThis.platforma<"u"}function _e(t){if(t&&typeof globalThis.getPlatforma=="function")return globalThis.getPlatforma(t);if(typeof globalThis.platforma<"u")return globalThis.platforma;throw new Error("Can't get platforma instance.")}function Kt(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx}function g(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx;throw new Error("Not in config rendering context")}function H(t,e){const n=Kt();if(n===void 0)return!1;if(t in n.callbackRegistry)throw new Error(`Callback with key ${t} already registered.`);return n.callbackRegistry[t]=e,!0}const ue=new Map;function Vt(t,e){t in g().callbackRegistry||(g().callbackRegistry[t]=n=>{for(const r of ue.get(t))r(n)},ue.set(t,[])),ue.get(t).push(e)}class T{constructor(e,n=r=>r){D(this,"isResolved",!1);D(this,"resolvedValue");this.handle=e,this.postProcess=n,Vt(e,r=>{this.resolvedValue=n(r),this.isResolved=!0})}map(e){return new T(this.handle,n=>e(this.postProcess(n)))}mapDefined(e){return new T(this.handle,n=>{const r=this.postProcess(n);return r?e(r):void 0})}toJSON(){return this.isResolved?this.resolvedValue:{__awaited_futures__:[this.handle]}}}function se(t,e){return t===void 0?void 0:e(t)}class E{constructor(e,n){this.handle=e,this.resolvePath=n}resolve(...e){const n=e.map(r=>({assertFieldType:"Input",...typeof r=="string"?{field:r}:r}));return this.resolveWithCommon({},...n)}resolveOutput(...e){const n=e.map(r=>({assertFieldType:"Output",...typeof r=="string"?{field:r}:r}));return this.resolveWithCommon({},...n)}resolveInput(...e){const n=e.map(r=>({assertFieldType:"Input",...typeof r=="string"?{field:r}:r}));return this.resolveWithCommon({},...n)}resolveAny(...e){return this.resolveWithCommon({},...e)}resolveWithCommon(e,...n){const r=[...this.resolvePath,...n.map(i=>typeof i=="string"?i:i.field)];return se(g().resolveWithCommon(this.handle,e,...n),i=>new E(i,r))}get resourceType(){return g().getResourceType(this.handle)}getInputsLocked(){return g().getInputsLocked(this.handle)}getOutputsLocked(){return g().getOutputsLocked(this.handle)}getIsReadyOrError(){return g().getIsReadyOrError(this.handle)}getIsFinal(){return g().getIsFinal(this.handle)}getError(){const e=[...this.resolvePath,"error"];return se(g().getError(this.handle),n=>new E(n,e))}listInputFields(){return g().listInputFields(this.handle)}listOutputFields(){return g().listOutputFields(this.handle)}listDynamicFields(){return g().listDynamicFields(this.handle)}getKeyValueBase64(e){return g().getKeyValueBase64(this.handle,e)}getKeyValueAsString(e){return g().getKeyValueAsString(this.handle,e)}getKeyValueAsJson(e){const n=this.getKeyValueAsString(e);if(n==null)throw new Error("Resource has no content.");return JSON.parse(n)}getDataBase64(){return g().getDataBase64(this.handle)}getDataAsString(){return g().getDataAsString(this.handle)}getDataAsJson(){const e=this.getDataAsString();if(e==null)throw new Error("Resource has no content.");return JSON.parse(e)}getPColumns(e=!1,n=""){const r=this.parsePObjectCollection(e,n);return r===void 0?void 0:Object.entries(r).map(([,s])=>{if(!u.isPColumn(s))throw new Error(`not a PColumn (kind = ${s.spec.kind})`);return s})}parsePObjectCollection(e=!1,n=""){const r=g().parsePObjectCollection(this.handle,e,n,...this.resolvePath);if(r===void 0)return;const i={};for(const[s,o]of Object.entries(r)){const a=[...this.resolvePath,s];i[s]=u.mapPObjectData(o,l=>new E(l,a))}return i}getFileContentAsBase64(e){return new T(g().getBlobContentAsBase64(this.handle,e))}getFileContentAsString(e){return new T(g().getBlobContentAsString(this.handle,e))}getFileContentAsJson(e){return new T(g().getBlobContentAsString(this.handle,e)).mapDefined(n=>JSON.parse(n))}getBlobContentAsBase64(){return this.getFileContentAsBase64()}getBlobContentAsString(){return this.getFileContentAsString()}getFileHandle(){return new T(g().getDownloadedBlobContentHandle(this.handle))}getDownloadedBlobHandle(){return this.getFileHandle()}getRemoteFileHandle(){return new T(g().getOnDemandBlobContentHandle(this.handle))}getOnDemandBlobHandle(){return this.getRemoteFileHandle()}extractArchiveAndGetURL(e){return new T(g().extractArchiveAndGetURL(this.handle,e))}getImportProgress(){return new T(g().getImportProgress(this.handle))}getLastLogs(e){return new T(g().getLastLogs(this.handle,e))}getProgressLog(e){return new T(g().getProgressLog(this.handle,e))}getProgressLogWithInfo(e){return new T(g().getProgressLogWithInfo(this.handle,e))}getLogHandle(){return new T(g().getLogHandle(this.handle))}allFieldsResolved(e="Input"){switch(e){case"Input":return this.getInputsLocked()&&this.listInputFields().every(n=>this.resolve({field:n,assertFieldType:"Input"})!==void 0);case"Output":return this.getOutputsLocked()&&this.listOutputFields().every(n=>this.resolve({field:n,assertFieldType:"Output"})!==void 0)}}mapFields(e,n){const{fieldType:r,requireLocked:i,skipUnresolved:s}={fieldType:"Input",requireLocked:!0,skipUnresolved:!1,...n},o=e;if(i&&(r==="Input"&&!this.getInputsLocked()||r==="Output"&&!this.getOutputsLocked()))return;let l=(r==="Input"?this.listInputFields():r==="Output"?this.listOutputFields():this.listDynamicFields()).map(c=>[c,this.resolve({field:c,assertFieldType:r})]);return s&&(l=l.filter(c=>c[1]!==void 0)),l.map(([c,f])=>o(c,f))}}const Le="staging",Ee="main",Jt={explicitColumnsSupport:!0,inlineColumnsSupport:!0,activeArgs:!0};function Oe(t){return typeof t=="object"&&t!==null&&"__awaited_futures__"in t}function de(t,e,n){if(e.has(n))return;if(e.add(n),typeof n==="object")if(Oe(n))n.__awaited_futures__.forEach(i=>t.add(i));else if(Array.isArray(n))for(const i of n)de(t,e,i);else for(const[,i]of Object.entries(n))i!==n&&de(t,e,i)}function $t(t){const e=new Set;return de(e,new Set,t),e}const Mt=Object.freeze(Object.defineProperty({__proto__:null,GlobalCfgRenderCtxFeatureFlags:Jt,MainAccessorName:Ee,StagingAccessorName:Le,getAllFutureAwaits:$t,isFutureAwait:Oe},Symbol.toStringTag,{value:"Module"})),Re="pl7.app/label",De="pl7.app/trace",Fe=M.z.object({type:M.z.string(),importance:M.z.number().optional(),id:M.z.string().optional(),label:M.z.string()}),ke=M.z.array(Fe),Ut=.001,Bt="__LABEL__",Pe="__LABEL__@1";function ge(t,e,n={}){const r=new Map,i=n.forceTraceElements!==void 0&&n.forceTraceElements.length>0?new Set(n.forceTraceElements):void 0,s=new Map,o=t.map(h=>{var S,F;const P=e(h);let d,m,w;"spec"in P&&typeof P.spec=="object"?(d=P.spec,m=P.prefixTrace,w=P.suffixTrace):d=P;const p=(S=d.annotations)==null?void 0:S[Re],C=(F=d.annotations)==null?void 0:F[De],y=(C?ke.safeParse(JSON.parse(C)).data:void 0)??[],v=[...m??[],...y,...w??[]];if(p!==void 0){const R={label:p,type:Bt,importance:-2};n.addLabelAsSuffix?v.push(R):v.splice(0,0,R)}const x=[],O=new Map;for(let R=v.length-1;R>=0;--R){const{type:G}=v[R],N=v[R].importance??0,V=(O.get(G)??0)+1;O.set(G,V);const k=`${G}@${V}`;s.set(k,(s.get(k)??0)+1),r.set(k,Math.max(r.get(k)??Number.NEGATIVE_INFINITY,N-(v.length-R)*Ut)),x.push({...v[R],fullType:k,occurrenceIndex:V})}return x.reverse(),{value:h,spec:d,label:p,fullTrace:x}}),a=[],l=[],c=[...r];c.sort(([,h],[,P])=>P-h);for(const[h]of c)h.endsWith("@1")||s.get(h)===t.length?a.push(h):l.push(h);const f=(h,P=!1)=>{const d=[];for(let m=0;m<o.length;m++){const w=o[m],p=w.fullTrace.filter(v=>h.has(v.fullType)||i&&i.has(v.type));if(p.length===0)if(P)d.push({label:"Unlabeled",value:w.value});else return;const C=p.map(v=>v.label),y=n.separator??" / ";d.push({label:C.join(y),value:w.value})}return d};if(a.length===0){if(l.length!==0)throw new Error("Non-empty secondary types list while main types list is empty.");return f(new Set(Pe),!0)}let b=0,A=-1;for(;b<a.length;){const h=new Set;n.includeNativeLabel&&h.add(Pe);for(let d=0;d<b;++d)h.add(a[d]);A>=0&&h.add(a[A]);const P=f(h);if(P!==void 0&&new Set(P.map(d=>d.label)).size===t.length)return P;A++,A>=a.length&&(b++,A=b)}return f(new Set([...a,...l]),!0)}const ne="PColumnData/",Z=ne+"ResourceMap",ee=ne+"Partitioned/ResourceMap",U=ne+"JsonPartitioned",K=ne+"BinaryPartitioned",Ne=ne+"Partitioned/",te=Ne+"JsonPartitioned",B=Ne+"BinaryPartitioned";function je(t,e,n,r=[],i){if(t===void 0)return!1;switch(t.resourceType.name){case Z:{let s=t.getInputsLocked();for(const o of t.listInputFields()){const a=t.resolve({field:o,assertFieldType:"Input"}),l=[...r,...JSON.parse(o)],c=a===void 0?void 0:e(a);c===void 0&&(s=!1),(c!==void 0||i)&&n.push({key:l,value:c})}return s}case ee:{let s=t.getInputsLocked();for(const o of t.listInputFields()){const a=t.resolve({field:o,assertFieldType:"Input"});if(a===void 0)s=!1;else{const l=[...r,...JSON.parse(o)],c=je(a,e,n,l,i);s=s&&c}}return s}default:throw new Error(`Unknown resource type: ${t.resourceType.name}`)}}function Wt(t,e,n=!1){const r=[];return{isComplete:je(t,e,r,[],n),data:r}}const pe=t=>{if(t.endsWith(".index"))return{baseKey:t.substring(0,t.length-6),type:"index"};if(t.endsWith(".values"))return{baseKey:t.substring(0,t.length-7),type:"values"};throw new Error(`key must ends on .index/.values for binary p-column, got: ${t}`)};function Ke(t){if(!t)return;const e=t.resourceType.name,n=t.getDataAsJson(),r=[];let i=0;switch(e){case Z:i=n.keyLength;break;case ee:i=n.partitionKeyLength+n.keyLength;break;case U:case K:i=n.partitionKeyLength;break;case B:case te:i=n.superPartitionKeyLength+n.partitionKeyLength;break}switch(e){case Z:case U:case K:for(let s of t.listInputFields()){e===K&&(s=pe(s).baseKey);const o=[...JSON.parse(s)];r.push(o)}break;case ee:case B:case te:for(const s of t.listInputFields()){const o=[...JSON.parse(s)],a=t.resolve({field:s,assertFieldType:"Input"});if(a!==void 0)for(let l of a.listInputFields()){e===B&&(l=pe(l).baseKey);const c=[...o,...JSON.parse(l)];r.push(c)}}break}return{data:r,keyLength:i}}function Gt(t){if(t.type!=="JsonPartitioned"&&t.type!=="BinaryPartitioned")throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${t.type}`);const{parts:e,partitionKeyLength:n}=t,r=[];for(let i=0;i<n;++i)r.push(new Set);for(const i of e){const s=i.key;if(s.length!==n)throw new Error(`Key length (${s.length}) does not match partition length (${n}) for key: ${JSON.stringify(s)}`);for(let o=0;o<n;++o)r[o].add(s[o])}return r.map(i=>Array.from(i.values()))}function Ve(t){if(t===void 0)return;if(u.isDataInfoEntries(t))return Gt(t);const e=Ke(t);if(!e)return;const{data:n,keyLength:r}=e,i=[];for(let s=0;s<r;++s)i.push(new Set);for(const s of n){if(s.length!==r)throw new Error("key length does not match partition length");for(let o=0;o<r;++o)i[o].add(s[o])}return i.map(s=>Array.from(s.values()))}function oe(t,e=[]){if(t===void 0||!t.getIsReadyOrError())return;const n=t.resourceType.name,r=t.getDataAsJson();if(e.length>0&&(n===te||n===B))throw new Error(`Unexpected nested super-partitioned resource: ${n}`);switch(n){case Z:case ee:throw new Error(`Only data columns are supported, got: ${n}`);case U:{if(typeof(r==null?void 0:r.partitionKeyLength)!="number")throw new Error(`Missing partitionKeyLength in metadata for ${n}`);const i=[];for(const s of t.listInputFields()){const o=t.resolve({field:s,assertFieldType:"Input"});if(o===void 0)return;const a=[...e,...JSON.parse(s)];i.push({key:a,value:o})}return{type:"JsonPartitioned",partitionKeyLength:r.partitionKeyLength,parts:i}}case K:{if(typeof(r==null?void 0:r.partitionKeyLength)!="number")throw new Error(`Missing partitionKeyLength in metadata for ${n}`);const i=[],s=new Map;for(const o of t.listInputFields()){const a=pe(o),l=t.resolve({field:o,assertFieldType:"Input"});if(l===void 0)return;let c=s.get(a.baseKey);c||(c={},s.set(a.baseKey,c)),a.type==="index"?c.index=l:c.values=l}for(const[o,a]of s.entries()){if(!a.index||!a.values)return;const l=[...e,...JSON.parse(o)];i.push({key:l,value:{index:a.index,values:a.values}})}return{type:"BinaryPartitioned",partitionKeyLength:r.partitionKeyLength,parts:i}}case te:{if(typeof(r==null?void 0:r.superPartitionKeyLength)!="number"||typeof(r==null?void 0:r.partitionKeyLength)!="number")throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${n}`);const i=r.superPartitionKeyLength+r.partitionKeyLength,s=[];for(const o of t.listInputFields()){const a=t.resolve({field:o,assertFieldType:"Input"});if(a===void 0)return;if(a.resourceType.name!==U)throw new Error(`Expected ${U} inside ${n}, but got ${a.resourceType.name}`);const l=oe(a,JSON.parse(o));if(l===void 0)return;if(l.type!=="JsonPartitioned")throw new Error(`Unexpected inner result type for ${n}: ${l.type}`);s.push(...l.parts)}return{type:"JsonPartitioned",partitionKeyLength:i,parts:s}}case B:{if(typeof(r==null?void 0:r.superPartitionKeyLength)!="number"||typeof(r==null?void 0:r.partitionKeyLength)!="number")throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${n}`);const i=r.superPartitionKeyLength+r.partitionKeyLength,s=[];for(const o of t.listInputFields()){const a=t.resolve({field:o,assertFieldType:"Input"});if(a===void 0)return;if(a.resourceType.name!==K)throw new Error(`Expected ${K} inside ${n}, but got ${a.resourceType.name}`);const l=oe(a,JSON.parse(o));if(l===void 0)return;if(l.type!=="BinaryPartitioned")throw new Error(`Unexpected inner result type for ${n}: ${l.type}`);s.push(...l.parts)}return{type:"BinaryPartitioned",partitionKeyLength:i,parts:s}}default:throw new Error(`Unknown resource type: ${n}`)}}function Je(t){if(t!==void 0){if(u.isDataInfoEntries(t))return t;if(u.isDataInfo(t))return u.dataInfoToEntries(t);if(t instanceof E)return oe(t);throw new Error(`Unexpected input type: ${typeof t}`)}}function $e(t,e){const n=[...e].sort((s,o)=>o[0]-s[0]);if(t.type==="JsonPartitioned"||t.type==="BinaryPartitioned"){const{partitionKeyLength:s}=t;for(const[o]of e)if(o>=s)throw new Error(`Can't filter on non-partitioned axis ${o}. Must be >= ${s}`)}else if(t.type==="Json"){const{keyLength:s}=t;for(const[o]of e)if(o>=s)throw new Error(`Can't filter on non-data axis ${o}. Must be >= ${s}`)}const r=s=>{for(const[o,a]of n)if(s[o]!==a)return!1;return!0},i=s=>{const o=[...s];for(const[a]of n)o.splice(a,1);return o};switch(t.type){case"Json":{const s=t.data.filter(o=>r(o.key)).map(o=>({key:i(o.key),value:o.value}));return{type:"Json",keyLength:t.keyLength-e.length,data:s}}case"JsonPartitioned":{const s=t.parts.filter(o=>r(o.key)).map(o=>({key:i(o.key),value:o.value}));return{type:"JsonPartitioned",partitionKeyLength:t.partitionKeyLength-e.length,parts:s}}case"BinaryPartitioned":{const s=t.parts.filter(o=>r(o.key)).map(o=>({key:i(o.key),value:o.value}));return{type:"BinaryPartitioned",partitionKeyLength:t.partitionKeyLength-e.length,parts:s}}}}class zt{constructor(e){this.columns=e}selectColumns(e){const n=typeof e=="function"?e:u.selectorsToPredicate(e);return this.columns.filter(r=>n(r.spec))}}function Ht(t){if(t)return t.map(e=>({type:`split:${u.canonicalizeAxisId(e.axisId)}`,label:e.label,importance:1e6}))}function qt(t){if(t)return t.map(e=>[e.axisIdx,e.value])}function Yt(t,e){if(!e||e.length===0)return t;const n=[...e].sort((r,i)=>r[0]-i[0]);return Ie({id:t,axisFilters:n})}function Ce(t){if(!t||typeof t!="object")return!1;const e=t,n=e.domain&&typeof e.domain=="object"&&Object.values(e.domain).some(i=>typeof i=="object"&&i!==null&&"anchor"in i),r=e.axes&&Array.isArray(e.axes)&&e.axes.some(i=>typeof i=="object"&&i!==null&&"anchor"in i);return!!e.domainAnchor||n||r}function Xt(t){if(typeof t!="object"||!("axes"in t)||t.axes===void 0)return[];const e=t.axes.map((n,r)=>typeof n=="object"&&"split"in n&&n.split===!0?r:-1).filter(n=>n!==-1);if(e.length>0&&t.partialAxesMatch!==void 0)throw new Error("Axis splitting is not supported when `partialAxesMatch` is defined.");return e.sort((n,r)=>n-r),e}class ae{constructor(){D(this,"defaultProviderStore",[]);D(this,"providers",[new zt(this.defaultProviderStore)]);D(this,"axisLabelProviders",[])}addColumnProvider(e){return this.providers.push(e),this}addAxisLabelProvider(e){return this.axisLabelProviders.push(e),this}addColumns(e){return this.defaultProviderStore.push(...e),this}addColumn(e){return this.defaultProviderStore.push(e),this}findLabels(e){for(const n of this.axisLabelProviders){const r=n.findLabels(e);if(r)return r}}getUniversalEntries(e,n){const{anchorCtx:r,labelOps:i,dontWaitAllData:s=!1,overrideLabelAnnotation:o=!1,exclude:a}=n??{},l={...o&&(i==null?void 0:i.includeNativeLabel)!==!1?{includeNativeLabel:!0}:{},...i??{}};let c=()=>!1;if(a){const d=(Array.isArray(a)?a:[a]).map(m=>{if(Ce(m)){if(!r)throw new Error("Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.");return u.selectorsToPredicate(u.resolveAnchors(r.anchors,m,n))}else return u.selectorsToPredicate(m)});c=m=>d.some(w=>w(m))}const f=typeof e=="function"?[e]:Array.isArray(e)?e:[e],b=[],A=new Set;for(const d of f){const m=Ce(d);let w;if(m){if(!r)throw new Error("Anchored selectors require an AnchoredIdDeriver to be provided in options.");w=u.resolveAnchors(r.anchors,d,n)}else w=d;const p=new Set,C=[];for(const x of this.providers){const O=x.selectColumns(w);for(const S of O){if(c(S.spec))continue;if(p.has(S.id))throw new Error(`Duplicate column id ${S.id} in provider ${x.constructor.name}`);const F=u.deriveNativeId(S.spec);A.has(F)||(p.add(S.id),A.add(F),C.push(S))}}if(C.length===0)continue;const y=Xt(d),v=y.length>0;for(const x of C){if(!u.isPColumnSpec(x.spec))continue;const O=x.spec;if(v){const S=Je(x.data);if(!S){if(s)continue;return}if(!u.isPartitionedDataInfoEntries(S))throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${S.type} for column ${x.id}`);const F=Ve(S),R=y[y.length-1];if(R>=S.partitionKeyLength)throw new Error(`Not enough partition keys (${S.partitionKeyLength}) for requested split axes (max index ${R}) in column ${O.name}`);const G=y.map(_=>this.findLabels(u.getAxisId(O.axesSpec[_]))),N=[],V=(_,z)=>{if(z>=y.length){if(N.push([..._]),N.length>1e4)throw new Error("Too many key combinations, aborting.");return}const j=y[z];if(j>=F.length)throw new Error(`Axis index ${j} out of bounds for unique keys array (length ${F.length}) during split key generation for column ${x.id}`);const J=F[j];if(!J||J.length===0){N.length=0;return}for(const re of J)_.push(re),V(_,z+1),_.pop()};if(V([],0),N.length===0)continue;const k=[...O.axesSpec],nt=y.map(_=>_);for(let _=y.length-1;_>=0;_--)k.splice(y[_],1);const rt={...O,axesSpec:k};for(const _ of N){const z=_.map((j,J)=>{const re=nt[J],it=u.getAxisId(O.axesSpec[re]),le=G[J],st=(le==null?void 0:le[j])??String(j);return{axisIdx:re,axisId:it,value:j,label:st}});b.push({type:"split",originalColumn:x,spec:O,adjustedSpec:rt,dataEntries:S,axisFilters:z})}}else b.push({type:"direct",originalColumn:x,spec:O,adjustedSpec:O})}}if(b.length===0)return[];const h=ge(b,d=>({spec:d.spec,suffixTrace:d.type==="split"?Ht(d.axisFilters):void 0}),l),P=[];for(const{value:d,label:m}of h){const{originalColumn:w,spec:p}=d,C=d.type==="split"?d.axisFilters:void 0,y=qt(C);let v;r?v=r.deriveS(p,y):v=Yt(w.id,y);let x={...d.adjustedSpec};o&&(x={...x,annotations:{...x.annotations??{},"pl7.app/label":m}}),P.push({id:v,spec:x,data:()=>d.type==="split"?u.entriesToDataInfo($e(d.dataEntries,y)):d.originalColumn.data,label:m})}return P}getColumns(e,n){const r=this.getUniversalEntries(e,{overrideLabelAnnotation:!0,...n??{}});if(!r)return;const i=[];for(const s of r){const o=s.data();if(!o){if(n!=null&&n.dontWaitAllData)continue;return}i.push({id:s.id,spec:s.spec,data:o})}return i}}function ce(t,e){if(t===void 0)return e===void 0;if(e===void 0)return!0;for(const n in e)if(t[n]!==e[n])return!1;return!0}function we(t){return u.mapPObjectData(t,e=>e instanceof E?e.handle:u.isDataInfo(e)?u.mapDataInfo(e,n=>n.handle):e)}class Me{constructor(){D(this,"ctx",g())}calculateOptions(e){return this.ctx.calculateOptions(e)}getOptions(e,n){const r=typeof e=="function"?e:u.selectorsToPredicate(e),i=this.getSpecs().entries.filter(a=>r(a.obj));let s={},o=!1;return typeof n<"u"&&(typeof n=="function"?s=n:typeof n=="object"&&("includeNativeLabel"in n||"separator"in n||"addLabelAsSuffix"in n?s=n:(n=n,s=n.label??{},o=n.refsWithEnrichments??!1))),typeof s=="object"?ge(i,a=>a.obj,s??{}).map(({value:{ref:a},label:l})=>({ref:u.withEnrichments(a,o),label:l})):i.map(({ref:a,obj:l})=>({ref:u.withEnrichments(a,o),label:s(l,a)}))}resolveAnchorCtx(e){if(e instanceof u.AnchoredIdDeriver)return e;const n={};for(const[r,i]of Object.entries(e))if(u.isPlRef(i)){const s=this.getPColumnSpecByRef(i);if(!s)return;n[r]=s}else n[r]=i;return new u.AnchoredIdDeriver(n)}getAnchoredPColumns(e,n,r){const i=this.resolveAnchorCtx(e);if(i)return new ae().addColumnProvider(this).addAxisLabelProvider(this).getColumns(n,{...r,anchorCtx:i})}getCanonicalOptions(e,n,r){const i=this.resolveAnchorCtx(e);if(!i)return;const s=new ae().addColumnProvider(this).addAxisLabelProvider(this).getUniversalEntries(n,{...r,anchorCtx:i});if(s)return s.map(o=>({value:o.id,label:o.label}))}getDataFromResultPool(){return this.getData()}getData(){const e=this.ctx.getDataFromResultPool();return{isComplete:e.isComplete,entries:e.entries.map(n=>({ref:n.ref,obj:{...n.obj,data:new E(n.obj.data,[n.ref.blockId,n.ref.name])}}))}}getDataWithErrorsFromResultPool(){return this.getDataWithErrors()}getDataWithErrors(){const e=this.ctx.getDataWithErrorsFromResultPool();return{isComplete:e.isComplete,entries:e.entries.map(n=>({ref:n.ref,obj:{...n.obj,data:u.mapValueInVOE(n.obj.data,r=>new E(r,[n.ref.blockId,n.ref.name]))}}))}}getSpecsFromResultPool(){return this.getSpecs()}getSpecs(){return this.ctx.getSpecsFromResultPool()}getDataByRef(e){var r;if(typeof this.ctx.getDataFromResultPoolByRef>"u")return(r=this.getData().entries.find(i=>i.ref.blockId===e.blockId&&i.ref.name===e.name))==null?void 0:r.obj;const n=this.ctx.getDataFromResultPoolByRef(e.blockId,e.name);if(n)return u.mapPObjectData(n,i=>new E(i,[e.blockId,e.name]))}getPColumnByRef(e){const n=this.getDataByRef(e);if(n)return u.ensurePColumn(n)}getPColumnSpecByRef(e){const n=this.getSpecByRef(e);if(n){if(!u.isPColumnSpec(n))throw new Error(`not a PColumn spec (kind = ${n.kind})`);return n}}getSpecByRef(e){return this.ctx.getSpecFromResultPoolByRef(e.blockId,e.name)}findDataWithCompatibleSpec(e){const n=[];e:for(const r of this.getData().entries){if(!u.isPColumnSpec(r.obj.spec))continue;const i=r.obj.spec;if(e.name===i.name&&e.valueType===i.valueType&&e.axesSpec.length===i.axesSpec.length&&ce(e.domain,i.domain)){for(let s=0;s<e.axesSpec.length;++s){const o=e.axesSpec[s],a=i.axesSpec[s];if(o.name!==a.name||o.type!==a.type||!ce(o.domain,a.domain))continue e}n.push(r.obj)}}return n}findLabels(e){const n=this.getData();for(const r of n.entries){if(!u.isPColumn(r.obj))continue;const i=r.obj.spec;if(i.name==="pl7.app/label"&&i.axesSpec.length===1&&i.axesSpec[0].name===e.name&&i.axesSpec[0].type===e.type&&ce(e.domain,i.axesSpec[0].domain)){if(r.obj.data.resourceType.name!=="PColumnData/Json")throw Error(`Expected JSON column for labels, got: ${r.obj.data.resourceType.name}`);return Object.fromEntries(Object.entries(r.obj.data.getDataAsJson().data).map(o=>[JSON.parse(o[0])[0],o[1]]))}}}selectColumns(e){const n=typeof e=="function"?e:u.selectorsToPredicate(e);return this.getSpecs().entries.filter(({obj:i})=>u.isPColumnSpec(i)?n(i):!1).map(({ref:i,obj:s})=>{const o=s;let a=null;const l=this;return{id:Ie(i),spec:o,get data(){var c;return a!==null||(a=(c=l.getPColumnByRef(i))==null?void 0:c.data),a}}})}findLabelsForColumnAxis(e,n){var s;const r=this.findLabels(e.axesSpec[n]);if(!r)return;const i=(s=e.annotations)==null?void 0:s["pl7.app/axisKeys/"+n];if(i!==void 0){const o=JSON.parse(i);return Object.fromEntries(o.map(a=>[a,r[a]??"Unlabelled"]))}else return r}}class q{constructor(){D(this,"ctx");D(this,"args");D(this,"uiState");D(this,"_activeArgsCache");D(this,"resultPool",new Me);this.ctx=g(),this.args=JSON.parse(this.ctx.args),this.uiState=this.ctx.uiState!==void 0?JSON.parse(this.ctx.uiState):{}}get activeArgs(){return this._activeArgsCache===void 0&&(this._activeArgsCache={v:this.ctx.activeArgs?JSON.parse(this.ctx.activeArgs):void 0}),this._activeArgsCache.v}getNamedAccessor(e){return se(this.ctx.getAccessorHandleByName(e),n=>new E(n,[e]))}get prerun(){return this.getNamedAccessor(Le)}get outputs(){return this.getNamedAccessor(Ee)}findLabels(e){return this.resultPool.findLabels(e)}verifyInlineAndExplicitColumnsSupport(e){var i;const n=e.some(s=>!(s.data instanceof E)||u.isDataInfo(s.data)),r=((i=this.ctx.featureFlags)==null?void 0:i.inlineColumnsSupport)===!0;if(n&&!r)throw Error("Inline or explicit columns not supported")}createPFrame(e){return this.verifyInlineAndExplicitColumnsSupport(e),this.ctx.createPFrame(e.map(n=>we(n)))}createPTable(e){let n;return"columns"in e?n={src:{type:"full",entries:e.columns.map(r=>({type:"column",column:r}))},filters:e.filters??[],sorting:e.sorting??[]}:n=e,this.verifyInlineAndExplicitColumnsSupport(u.extractAllColumns(n.src)),this.ctx.createPTable(u.mapPTableDef(n,r=>we(r)))}getBlockLabel(e){return this.ctx.getBlockLabel(e)}getCurrentUnstableMarker(){return this.ctx.getCurrentUnstableMarker()}logInfo(e){this.ctx.logInfo(e)}logWarn(e){this.ctx.logWarn(e)}logError(e){this.ctx.logError(e)}}const X="1.33.8";function Ue(t){return t.__renderLambda===!0}function ie(t){if(t!==void 0)return Ue(t)?t.handle:t}function $(t){if(t!==void 0)return typeof t=="string"?{__renderLambda:!0,handle:t,retentive:!1}:t}function Qt(t){if(t.v3!==void 0){const{initialArgs:e,initialUiState:n,inputsValid:r,outputs:i,renderingMode:s,sdkVersion:o,sections:a,title:l,enrichmentTargets:c}=t.v3,{code:f}=t;return{initialArgs:e,initialUiState:n,inputsValid:r,outputs:i,renderingMode:s,sdkVersion:o,sections:a,title:l,code:f,enrichmentTargets:c}}else if(t.inputsValid!==void 0){const{sdkVersion:e,renderingMode:n,outputs:r,inputsValid:i,sections:s,initialArgs:o,code:a}=t,l=Object.keys(t);if(e===void 0||n===void 0||r===void 0||i===void 0||s===void 0||o===void 0)throw new Error(`Malformed config v2. SDK version ${e}; Fields = ${l.join(", ")}`);return{sdkVersion:e,renderingMode:n,initialArgs:o,outputs:Object.fromEntries(Object.entries(r).map(([c,f])=>[c,$(f)])),inputsValid:$(i),sections:$(s),initialUiState:void 0,code:a}}else if(t.renderingMode!==void 0){const{sdkVersion:e,canRun:n,renderingMode:r,outputs:i,sections:s,initialArgs:o,code:a}=t,l=Object.keys(t);if(r===void 0||i===void 0||n===void 0||s===void 0||o===void 0)throw new Error(`Malformed config v1. SDK version ${e}; Fields = ${l.join(", ")}`);return{sdkVersion:e??"unknown",renderingMode:r,initialArgs:o,outputs:Object.fromEntries(Object.entries(i).map(([c,f])=>[c,$(f)])),inputsValid:$(n),sections:$(s),initialUiState:void 0,code:a}}else{const{sdkVersion:e}=t,n=Object.keys(t);throw new Error(`Config format not supported: SDK = ${e}; Fields = ${n.join(", ")}`)}}class L{constructor(e,n,r,i,s,o,a,l){this._renderingMode=e,this._initialArgs=n,this._initialUiState=r,this._outputs=i,this._inputsValid=s,this._sections=o,this._title=a,this._enrichmentTargets=l}static create(e="Heavy"){return new L(e,void 0,{},{},Y(!0),Y([]),void 0,void 0)}output(e,n,r={}){if(typeof n=="function"){const i=`output#${e}`;return H(i,()=>n(new q)),new L(this._renderingMode,this._initialArgs,this._initialUiState,{...this._outputs,[e]:{__renderLambda:!0,handle:i,...r}},this._inputsValid,this._sections,this._title,this._enrichmentTargets)}else return new L(this._renderingMode,this._initialArgs,this._initialUiState,{...this._outputs,[e]:n},this._inputsValid,this._sections,this._title,this._enrichmentTargets)}retentiveOutput(e,n){return this.output(e,n,{retentive:!0})}argsValid(e){return typeof e=="function"?(H("inputsValid",()=>e(new q)),new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,{__renderLambda:!0,handle:"inputsValid"},this._sections,this._title,this._enrichmentTargets)):new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,e,this._sections,this._title,this._enrichmentTargets)}sections(e){return Array.isArray(e)?this.sections(Y(e)):typeof e=="function"?(H("sections",()=>e(new q)),new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,{__renderLambda:!0,handle:"sections"},this._title,this._enrichmentTargets)):new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,e,this._title,this._enrichmentTargets)}title(e){return H("title",()=>e(new q)),new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,this._sections,{__renderLambda:!0,handle:"title"},this._enrichmentTargets)}initialArgs(e){return new L(this._renderingMode,e,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}withArgs(e){return new L(this._renderingMode,e,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}withUiState(e){return new L(this._renderingMode,this._initialArgs,e,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}enriches(e){return H("enrichmentTargets",e),new L(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,{__renderLambda:!0,handle:"enrichmentTargets"})}done(){if(this._initialArgs===void 0)throw new Error("Initial arguments not set.");const e={v3:{sdkVersion:X,renderingMode:this._renderingMode,initialArgs:this._initialArgs,initialUiState:this._initialUiState,inputsValid:this._inputsValid,sections:this._sections,title:this._title,outputs:this._outputs,enrichmentTargets:this._enrichmentTargets},sdkVersion:X,renderingMode:this._renderingMode,initialArgs:this._initialArgs,inputsValid:ie(this._inputsValid),sections:ie(this._sections),outputs:Object.fromEntries(Object.entries(this._outputs).map(([n,r])=>[n,ie(r)]))};return jt()?_e({sdkVersion:X}):{config:e}}}const Zt=(t,e)=>{let n=t.toString();return e==null||e.forEach(r=>{if(r)for(const[i,s]of Object.entries(r))n+=i,n+=s}),n};function en(t){if(!t.length)return[];let e=[[]];return t.forEach(n=>{const r=[];n.forEach(i=>{r.push(...e.map(s=>[...s,i]))}),e=r}),e}function Be(t){var e;return t.axesSpec.length===2&&((e=t.annotations)==null?void 0:e[He])==="true"}function We(t){var n,r;const e=new Map;for(const{id:i,spec:s}of t){const[o,a]=s.axesSpec.map(u.getAxisId).map(u.canonicalizeJson);e.has(o)||e.set(o,new Map),e.has(a)||e.set(a,new Map),(n=e.get(o))==null||n.set(a,{columnId:i,spec:s}),(r=e.get(a))==null||r.set(o,{columnId:i,spec:s})}return e}function me(t,e,n){var l;const i=[...t.keys()].map(u.parseJson).find(c=>u.matchAxisId(e,c));if(!i)return!1;const s=u.canonicalizeJson(u.getAxisId(i)),o=new Set([s]);let a=[s];for(;a.length;){const c=[];for(const f of a)for(const b of((l=t.get(f))==null?void 0:l.keys())??[]){const A=u.parseJson(b);if(u.matchAxisId(n,A))return!0;o.has(b)||(c.push(b),o.add(b))}a=c}return!1}function tn(t,e,n){const r=t.axesSpec.map(u.getAxisId),i=e.axesSpec.map(u.getAxisId);return i.some(s=>r.some(o=>u.matchAxisId(o,s)&&u.matchAxisId(s,o)))||!!n&&i.some(s=>r.some(o=>me(n,o,s)))}function Ge(t,e,n){const r=t.axesSpec.map(u.getAxisId),i=e.axesSpec.map(u.getAxisId);return i.some(s=>r.some(o=>u.matchAxisId(o,s)))||!!n&&i.some(s=>r.some(o=>me(n,o,s)))}const ze="pl7.app/graph/isVirtual",fe="pl7.app/label",He="pl7.app/isLinkerColumn";function xe(t,e,n){const r=t.spec.axesSpec.map(u.getAxisId),i=e.spec.axesSpec.map(u.getAxisId);if(tn(t.spec,e.spec,n))return[];if(!Ge(t.spec,e.spec,n))return[];const a=i.map(A=>r.filter(h=>u.matchAxisId(h,A))),l=en(a),c=new Set,f=new Set,b=l.map(A=>{const h=new Set;return A.map((P,d)=>{const m=e.spec.axesSpec[d].domain,w=P.domain;return Object.entries(w??{}).forEach(([p,C])=>{if((m==null?void 0:m[p])===void 0){const y=JSON.stringify([p,C]);h.add(y),c.add(y)}}),{...P,annotations:e.spec.axesSpec[d].annotations}}),h});return[...c].forEach(A=>{b.some(h=>!h.has(A))&&f.add(A)}),l.map((A,h)=>{var p;const P=Zt(e.id,A.map(C=>C.domain)),d=((p=e.spec.annotations)==null?void 0:p[fe])??"",m=[...b[h]].filter(C=>f.has(C)).sort().map(C=>{var y;return(y=JSON.parse(C))==null?void 0:y[1]}).join(" / "),w={...e.spec.annotations,[ze]:"true"};return(d||m)&&(w[fe]=d&&m?d+" / "+m:d+m),{id:P,spec:{...e.spec,axesSpec:A.map((C,y)=>({...C,annotations:e.spec.axesSpec[y].annotations})),annotations:w},data:e.data}})}function nn(t,e=new Map){const n=[];for(let r=0;r<t.length;r++)for(let i=r+1;i<t.length;i++){const s=t[r],o=t[i];n.push(...xe(s,o,e),...xe(o,s,e))}return n}function qe(t,e,n=[],r=new Map){const i=new Set,s=new Map;t.forEach(a=>{i.add(a.id),s.set(u.canonicalizeJson(u.getPColumnSpecId(a.spec)),a)});const o=new Map;for(const a of e){if(i.has(a.id))continue;const l=u.canonicalizeJson(u.getPColumnSpecId(a.spec));if(!s.has(l)){for(const c of s.values())if(Ge(c.spec,a.spec,r)){o.set(l,a);break}}}for(const a of n){if(i.has(a.id))continue;const l=u.canonicalizeJson(u.getPColumnSpecId(a.spec));s.has(l)||o.has(l)||(i.add(a.id),s.set(l,a))}return[...s.values(),...o.values()]}function rn(t,e){if(!e)return;const n=t.resultPool.getData().entries.map(l=>l.obj).filter(u.isPColumn),i=[...e,...n].filter(l=>Be(l.spec)),s=We(i),a=[...qe(e,n,i,s)];if(!a.some(l=>l.data instanceof E&&!l.data.getIsReadyOrError()))return t.createPFrame(a)}function sn(t){const e=t.type;switch(e){case"axis":return u.canonicalizeJson(t);case"column":return u.canonicalizeJson(t);default:throw Error(`unsupported column type: ${e}`)}}function Ye(t){return t.axesSpec.length===1&&t.name==="pl7.app/label"}function ye(t){return new ae().addAxisLabelProvider(t).addColumnProvider(t).getColumns({name:"pl7.app/label",axes:[{}]},{dontWaitAllData:!0})}function be(t,e){const n=[],r=[];for(const a of t)Ye(a.spec)?n.push(a):r.push(a);const i=[];for(const a of r)for(const l of a.spec.axesSpec){const c=u.getAxisId(l);i.some(f=>u.matchAxisId(f,c))||i.push(c)}for(const a of n){const l=u.getAxisId(a.spec.axesSpec[0]),c=i.findIndex(f=>u.matchAxisId(f,l));c!==-1&&i.splice(c,1)}const s=(a,l)=>{let c=a.toString();if(l)for(const f in l)c+=f,c+=l[f];return c},o=[];for(const a of e){const l=a.spec.axesSpec[0],c=u.getAxisId(l),f=i.findIndex(b=>u.matchAxisId(b,c));if(f!==-1){const b=i[f],A=Object.keys(b.domain??{}).length,h=Object.keys(l.domain??{}).length;A>h?o.push({id:s(a.id,b.domain),spec:{...a.spec,axesSpec:[{...b,annotations:l.annotations}]},data:a.data}):o.push(a),i.splice(f,1)}}return o}function ve(t){const e=i=>Array.isArray(i),n=i=>i instanceof E,r=i=>typeof i=="object"&&"type"in i;return t.map(i=>i.data).every(i=>{if(e(i))return!0;if(n(i))return i.getIsReadyOrError();if(r(i))switch(i.type){case"Json":return!0;case"JsonPartitioned":return Object.values(i.parts).every(o=>o.getIsReadyOrError());case"BinaryPartitioned":return Object.values(i.parts).every(o=>o.index.getIsReadyOrError()&&o.values.getIsReadyOrError())}else throw Error(`unsupported column data type: ${i}`)})}function Xe(t,e,n,r,i,s){let o=t;const a=[];if(s){o=[];for(const l of t)s(l.spec)?o.push(l):a.push(l)}return a.push(...e),{src:{type:"outer",primary:{type:n,entries:o.map(l=>({type:"column",column:l}))},secondary:a.map(l=>({type:"column",column:l}))},filters:r,sorting:i}}function on(t,e,n,r){var c,f;Array.isArray(r)&&(r={filters:r});const i=(r==null?void 0:r.coreJoinType)??"full",s=[...(r==null?void 0:r.filters)??[],...((c=n==null?void 0:n.pTableParams)==null?void 0:c.filters)??[]],o=((f=n==null?void 0:n.pTableParams)==null?void 0:f.sorting)??[],a=ye(t.resultPool);if(!a)return;const l=be(e.map(u.getColumnIdAndSpec),a);if(ve([...e,...l]))return t.createPTable(Xe(e,l,i,s,o,r==null?void 0:r.coreColumnPredicate))}function Qe(t){var e;return((e=t.annotations)==null?void 0:e["pl7.app/table/visibility"])==="hidden"}function Ze(t){var e;return((e=t.annotations)==null?void 0:e["pl7.app/table/visibility"])==="optional"}function an(t,e,n,r,i){var m,w;const s=(i==null?void 0:i.coreJoinType)??"full",o=[...(i==null?void 0:i.filters)??[],...((m=r==null?void 0:r.pTableParams)==null?void 0:m.filters)??[]],a=((w=r==null?void 0:r.pTableParams)==null?void 0:w.sorting)??[],l=e.filter(p=>!Qe(p.spec)),c=l.find(p=>n(p.spec));if(!c)return;const f=ye(t.resultPool);if(!f)return;const b=new Set((()=>{var C,y;if(s==="inner")return[];const p=(y=(C=r==null?void 0:r.gridState.columnVisibility)==null?void 0:C.hiddenColIds)==null?void 0:y.map(u.parseJson).filter(v=>v.type==="column").map(v=>v.id);return p||l.filter(v=>Ze(v.spec)).map(v=>v.id)})());b.delete(c.id),[...o.map(p=>p.column),...a.map(p=>p.column)].filter(p=>p.type==="column").map(p=>b.delete(p.id));const A=l.filter(p=>!b.has(p.id)),h=be(A.map(u.getColumnIdAndSpec),f),P=[...c.spec.axesSpec.map(p=>({type:"axis",id:u.getAxisId(p),spec:p})),...[...l,...h].map(p=>({type:"column",id:p.id,spec:p.spec}))];if(!ve([...A,...h]))return;const d=t.createPTable(Xe(l,h,s,o,a,i==null?void 0:i.coreColumnPredicate));return{tableSpec:P,tableHandle:d}}function ln(t,e,n){const r=t.resultPool.findLabels(e);return{axis:e,options:n.map(i=>({value:i,label:(r==null?void 0:r[i])??i.toString()})),defaultValue:n[0]}}function un(t){const e=t.type;switch(e){case"axis":return u.canonicalizeJson(t);case"column":return u.canonicalizeJson(t);default:throw Error(`unsupported column type: ${e}`)}}function cn(t,e,n,r){if(!(!e||e.axesSpec.length===0))return{id:t,spec:{kind:"PColumn",valueType:"Int",name:"pl7.app/table/row-selection",axesSpec:e.axesSpec,...r&&{domain:r},annotations:{"pl7.app/label":n??"Selected rows","pl7.app/discreteValues":"[1]"}},data:e.selectedKeys.filter(i=>!i.some(s=>u.isPTableAbsent(s))).map(i=>({key:i,val:1}))}}function dn(t){return t===u.PTableNA?(console.error("Axis value can never be N/A"),""):t}class pn{constructor(e){this.handle=e}async findColumns(e){return await platforma.pFrameDriver.findColumns(this.handle,e)}async getColumnSpec(e){return await platforma.pFrameDriver.getColumnSpec(this.handle,e)}async listColumns(){return await platforma.pFrameDriver.listColumns(this.handle)}async calculateTableData(e,n){return await platforma.pFrameDriver.calculateTableData(this.handle,e,n)}async getUniqueValues(e){return await platforma.pFrameDriver.getUniqueValues(this.handle,e)}}function et(t){return he({__isRef:!0,blockId:Q(t,"blockId"),name:Q(t,"name")})}function fn(t){return he({ref:et(Q(t,"ref")),label:Q(t,"label")})}const hn={sdkVersion:X};function tt(){return _e({sdkVersion:X})}function gn(t){try{return tt()}catch{return t}}function mn(t){if(typeof globalThis.getEnvironmentValue=="function")return globalThis.getEnvironmentValue(t)}exports.Args=ct;exports.BlockModel=L;exports.CurrentSdkInfo=hn;exports.FutureRef=T;exports.IS_VIRTUAL_COLUMN=ze;exports.It=dt;exports.JsRenderInternal=Mt;exports.LABEL_ANNOTATION=fe;exports.LINKER_COLUMN_ANNOTATION=He;exports.MainOutputs=pt;exports.OutputError=Se;exports.PAnnotationLabel=Re;exports.PAnnotationTrace=De;exports.PColumnCollection=ae;exports.PFrameImpl=pn;exports.RT_BINARY_PARTITIONED=K;exports.RT_BINARY_SUPER_PARTITIONED=B;exports.RT_JSON_PARTITIONED=U;exports.RT_JSON_SUPER_PARTITIONED=te;exports.RT_RESOURCE_MAP=Z;exports.RT_RESOURCE_MAP_PARTITIONED=ee;exports.RenderCtx=q;exports.ResultPool=Me;exports.StagingOutputs=ft;exports.Trace=ke;exports.TraceEntry=Fe;exports.TreeNodeAccessor=E;exports.UiState=ht;exports.allColumnsComputed=ve;exports.and=Pt;exports.convertOrParsePColumnData=Je;exports.createPFrameForGraphs=rn;exports.createPlDataTable=on;exports.createPlDataTableSheet=ln;exports.createPlDataTableV2=an;exports.createRowSelectionColumn=cn;exports.deriveLabels=ge;exports.downgradeCfgOrLambda=ie;exports.enrichColumnsWithCompatible=qe;exports.extractArchiveAndGetURL=Ot;exports.extractConfig=Qt;exports.filterDataInfoEntries=$e;exports.flatten=bt;exports.fromPlOption=fn;exports.fromPlRef=et;exports.getAdditionalColumns=nn;exports.getAllLabelColumns=ye;exports.getBlobContent=St;exports.getBlobContentAsJson=_t;exports.getBlobContentAsString=Tt;exports.getDownloadedBlobContent=Lt;exports.getEnvironmentValue=mn;exports.getFromCfg=W;exports.getImmediate=Y;exports.getImportProgress=Rt;exports.getJsonField=Q;exports.getLastLogs=Dt;exports.getLinkerColumnsMap=We;exports.getLogHandle=Nt;exports.getMatchingLabelColumns=be;exports.getOnDemandBlobContent=Et;exports.getPartitionKeysList=Ke;exports.getPlatformaOrDefault=gn;exports.getProgressLog=Ft;exports.getProgressLogWithInfo=kt;exports.getRawPlatformaInstance=tt;exports.getResourceField=wt;exports.getResourceValueAsJson=xt;exports.getUniquePartitionKeys=Ve;exports.hasPathWithLinkerColumns=me;exports.ifDef=se;exports.isColumnHidden=Qe;exports.isColumnOptional=Ze;exports.isConfigLambda=Ue;exports.isEmpty=vt;exports.isLabelColumn=Ye;exports.isLinkerColumn=Be;exports.isolate=ut;exports.makeArray=gt;exports.makeObject=he;exports.mapArrayValues=yt;exports.mapPTableValueToAxisKey=dn;exports.mapRecordValues=mt;exports.mapResourceFields=It;exports.not=At;exports.or=Ct;exports.parsePColumnData=oe;exports.parseResourceMap=Wt;exports.readOutput=Te;exports.stringifyPTableColumnId=un;exports.stringifyPTableColumnSpec=sn;exports.wrapOutputs=lt;Object.keys(u).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>u[t]})});Object.keys(Ae).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>Ae[t]})});
2
2
  //# sourceMappingURL=index.js.map