@platforma-sdk/model 1.30.11 → 1.30.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
- import { PColumn, PColumnValues, PFrameHandle } from '@milaboratories/pl-model-common';
1
+ import { DataInfo, PColumn, PColumnValues, PFrameHandle } from '@milaboratories/pl-model-common';
2
2
  import { RenderCtx, TreeNodeAccessor } from '../render';
3
3
  export declare const IS_VIRTUAL_COLUMN = "pl7.app/graph/isVirtual";
4
4
  export declare const LABEL_ANNOTATION = "pl7.app/label";
5
- export declare function getAdditionalColumns(columns: PColumn<TreeNodeAccessor | PColumnValues>[]): PColumn<TreeNodeAccessor | PColumnValues>[];
6
- export declare function enrichColumnsWithCompatible(mainColumns: PColumn<TreeNodeAccessor | PColumnValues>[], secondaryColumns: PColumn<TreeNodeAccessor | PColumnValues>[]): PColumn<TreeNodeAccessor | PColumnValues>[];
7
- export declare function createPFrameForGraphs<A, U>(ctx: RenderCtx<A, U>, blockColumns?: PColumn<TreeNodeAccessor | PColumnValues>[]): PFrameHandle | undefined;
5
+ export declare function getAdditionalColumns(columns: PColumn<TreeNodeAccessor | DataInfo<TreeNodeAccessor> | PColumnValues>[]): PColumn<TreeNodeAccessor | DataInfo<TreeNodeAccessor> | PColumnValues>[];
6
+ export declare function enrichColumnsWithCompatible(mainColumns: PColumn<TreeNodeAccessor | DataInfo<TreeNodeAccessor> | PColumnValues>[], secondaryColumns: PColumn<TreeNodeAccessor | DataInfo<TreeNodeAccessor> | PColumnValues>[]): PColumn<TreeNodeAccessor | DataInfo<TreeNodeAccessor> | PColumnValues>[];
7
+ export declare function createPFrameForGraphs<A, U>(ctx: RenderCtx<A, U>, blockColumns: PColumn<TreeNodeAccessor | DataInfo<TreeNodeAccessor> | PColumnValues>[] | undefined): PFrameHandle | undefined;
8
8
  //# sourceMappingURL=PFrameForGraphs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PFrameForGraphs.d.ts","sourceRoot":"","sources":["../../src/components/PFrameForGraphs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,OAAO,EAEP,aAAa,EACb,YAAY,EAED,MAAM,iCAAiC,CAAC;AAQrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAoD7C,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAuFhD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,GAAG,aAAa,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,aAAa,CAAC,EAAE,CAetI;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,OAAO,CAAC,gBAAgB,GAAG,aAAa,CAAC,EAAE,EACxD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,GAAG,aAAa,CAAC,EAAE,GAC5D,OAAO,CAAC,gBAAgB,GAAG,aAAa,CAAC,EAAE,CAwB7C;AAWD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EACxC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,YAAY,CAAC,EAAE,OAAO,CAAC,gBAAgB,GAAG,aAAa,CAAC,EAAE,GACzD,YAAY,GAAG,SAAS,CAuB1B"}
1
+ {"version":3,"file":"PFrameForGraphs.d.ts","sourceRoot":"","sources":["../../src/components/PFrameForGraphs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,QAAQ,EACR,OAAO,EAGP,aAAa,EACb,YAAY,EAEb,MAAM,iCAAiC,CAAC;AAQzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAoD7C,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAuFhD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,EAAE,GAChF,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,EAAE,CAe1E;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,EAAE,EACrF,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,EAAE,GACzF,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,EAAE,CAwB1E;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EACxC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,YAAY,EAAE,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,EAAE,GAAG,SAAS,GACjG,YAAY,GAAG,SAAS,CAsB1B"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Ze=Object.defineProperty;var et=(t,e,n)=>e in t?Ze(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var E=(t,e,n)=>et(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@milaboratories/pl-model-common"),Ce=require("canonicalize"),K=require("zod"),be=require("@milaboratories/pl-error-like");class we extends Error{constructor(e,n){super(`${e.length}${n?"+":""} errors, first error: `+e[0].message),this.errors=e,this.moreErrors=n}}function Ie(t){if(!t.ok)throw new we(t.errors,t.moreErrors);return t.value}function tt(t){return new Proxy(t,{get(e,n){return Ie(e[n])}})}function x(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null?z(t):t}function $(t){return{type:"GetFromCtx",variable:t}}function nt(t){return{type:"Isolate",cfg:t}}const rt=$("$args"),it=$("$it"),st=$("$prod"),ot=$("$staging"),at=$("$ui");function z(t){return{type:"Immediate",value:t}}function fe(t){const e={};for(const[n,r]of Object.entries(t))e[n]=x(r);return{type:"MakeObject",template:e}}function lt(...t){const e=[];for(const n of t)e.push(x(n));return{type:"MakeArray",template:e}}function q(t,e){return{type:"GetJsonField",source:x(t),field:x(e)}}function ut(t,e,n="$it"){return{type:"MapRecordValues",source:t,mapping:e,itVar:n}}function ct(t,e,n="$it"){return{type:"MapArrayValues",source:t,mapping:e,itVar:n}}function dt(t){return{type:"Flatten",source:t}}function pt(t){return{type:"IsEmpty",arg:t}}function ft(t){return{type:"Not",operand:t}}function ht(t,e){return{type:"And",operand1:t,operand2:e}}function gt(t,e){return{type:"Or",operand1:t,operand2:e}}function mt(t,e){return{type:"GetResourceField",source:x(t),field:x(e)}}function yt(){return function(t){return{type:"GetResourceValueAsJson",source:x(t)}}}function bt(t,e,n="$it"){return{type:"MapResourceFields",source:t,mapping:e,itVar:n}}function vt(t){return{type:"GetBlobContent",source:x(t)}}function At(t){return{type:"GetBlobContentAsString",source:x(t)}}function Pt(){return function(t){return{type:"GetBlobContentAsJson",source:x(t)}}}function Ct(t){return{type:"GetDownloadedBlobContent",source:x(t)}}function wt(t){return{type:"GetOnDemandBlobContent",source:x(t)}}function It(t,e){return{type:"ExtractArchiveAndGetURL",format:e,source:x(t)}}function xt(t){return{type:"GetImportProgress",source:x(t)}}function St(t,e){return{type:"GetLastLogs",source:x(t),lines:e}}function _t(t,e){return{type:"GetProgressLog",source:x(t),patternToSearch:e}}function Tt(t,e){return{type:"GetProgressLogWithInfo",source:x(t),patternToSearch:e}}function Lt(t){return{type:"GetLogHandle",source:x(t)}}function Et(){return typeof globalThis.getPlatforma<"u"||typeof globalThis.platforma<"u"}function xe(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 Ot(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx}function b(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx;throw new Error("Not in config rendering context")}function W(t,e){const n=Ot();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 le=new Map;function Rt(t,e){t in b().callbackRegistry||(b().callbackRegistry[t]=n=>{for(const r of le.get(t))r(n)},le.set(t,[])),le.get(t).push(e)}class S{constructor(e,n=r=>r){E(this,"isResolved",!1);E(this,"resolvedValue");this.handle=e,this.postProcess=n,Rt(e,r=>{this.resolvedValue=n(r),this.isResolved=!0})}map(e){return new S(this.handle,n=>e(this.postProcess(n)))}mapDefined(e){return new S(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 re(t,e){return t===void 0?void 0:e(t)}class T{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 re(b().resolveWithCommon(this.handle,e,...n),i=>new T(i,r))}get resourceType(){return b().getResourceType(this.handle)}getInputsLocked(){return b().getInputsLocked(this.handle)}getOutputsLocked(){return b().getOutputsLocked(this.handle)}getIsReadyOrError(){return b().getIsReadyOrError(this.handle)}getIsFinal(){return b().getIsFinal(this.handle)}getError(){const e=[...this.resolvePath,"error"];return re(b().getError(this.handle),n=>new T(n,e))}listInputFields(){return b().listInputFields(this.handle)}listOutputFields(){return b().listOutputFields(this.handle)}listDynamicFields(){return b().listDynamicFields(this.handle)}getKeyValueBase64(e){return b().getKeyValueBase64(this.handle,e)}getKeyValueAsString(e){return b().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 b().getDataBase64(this.handle)}getDataAsString(){return b().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=b().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 T(l,a))}return i}getFileContentAsBase64(){return new S(b().getBlobContentAsBase64(this.handle))}getFileContentAsString(){return new S(b().getBlobContentAsString(this.handle))}getFileContentAsJson(){return new S(b().getBlobContentAsString(this.handle)).mapDefined(e=>JSON.parse(e))}getBlobContentAsBase64(){return this.getFileContentAsBase64()}getBlobContentAsString(){return this.getFileContentAsString()}getFileHandle(){return new S(b().getDownloadedBlobContentHandle(this.handle))}getDownloadedBlobHandle(){return this.getFileHandle()}getRemoteFileHandle(){return new S(b().getOnDemandBlobContentHandle(this.handle))}getOnDemandBlobHandle(){return this.getRemoteFileHandle()}extractArchiveAndGetURL(e){return new S(b().extractArchiveAndGetURL(this.handle,e))}getImportProgress(){return new S(b().getImportProgress(this.handle))}getLastLogs(e){return new S(b().getLastLogs(this.handle,e))}getProgressLog(e){return new S(b().getProgressLog(this.handle,e))}getProgressLogWithInfo(e){return new S(b().getProgressLogWithInfo(this.handle,e))}getLogHandle(){return new S(b().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,p])=>o(c,p))}}const Se="staging",_e="main",Dt={explicitColumnsSupport:!0,inlineColumnsSupport:!0,activeArgs:!0};function Te(t){return typeof t=="object"&&t!==null&&"__awaited_futures__"in t}function ce(t,e,n){if(e.has(n))return;if(e.add(n),typeof n==="object")if(Te(n))n.__awaited_futures__.forEach(i=>t.add(i));else if(Array.isArray(n))for(const i of n)ce(t,e,i);else for(const[,i]of Object.entries(n))i!==n&&ce(t,e,i)}function Ft(t){const e=new Set;return ce(e,new Set,t),e}const kt=Object.freeze(Object.defineProperty({__proto__:null,GlobalCfgRenderCtxFeatureFlags:Dt,MainAccessorName:_e,StagingAccessorName:Se,getAllFutureAwaits:Ft,isFutureAwait:Te},Symbol.toStringTag,{value:"Module"})),Le="pl7.app/label",Ee="pl7.app/trace",Oe=K.z.object({type:K.z.string(),importance:K.z.number().optional(),id:K.z.string().optional(),label:K.z.string()}),Re=K.z.array(Oe),jt=.001,Vt="__LABEL__",ve="__LABEL__@1";function he(t,e,n={}){const r=new Map,i=new Map,s=t.map(h=>{var ee,O;const m=e(h);let g,I,d;"spec"in m&&typeof m.spec=="object"?(g=m.spec,I=m.prefixTrace,d=m.suffixTrace):g=m;const A=(ee=g.annotations)==null?void 0:ee[Le],y=(O=g.annotations)==null?void 0:O[Ee],P=(y?Re.safeParse(JSON.parse(y)).data:void 0)??[],C=[...I??[],...P,...d??[]];if(A){const L={label:A,type:Vt,importance:-2};n.addLabelAsSuffix?C.push(L):C.splice(0,0,L)}const R=[],U=new Map;for(let L=C.length-1;L>=0;--L){const{type:k}=C[L],oe=C[L].importance??0,B=(U.get(k)??0)+1;U.set(k,B);const w=`${k}@${B}`;i.set(w,(i.get(w)??0)+1),r.set(w,Math.max(r.get(w)??Number.NEGATIVE_INFINITY,oe-(C.length-L)*jt)),R.push({...C[L],fullType:w,occurenceIndex:B})}return R.reverse(),{value:h,spec:g,label:A,fullTrace:R}}),o=[],a=[],l=[...r];l.sort(([,h],[,m])=>m-h);for(const[h]of l)h.endsWith("@1")||i.get(h)===t.length?o.push(h):a.push(h);const c=h=>{const m=[];for(let g=0;g<s.length;g++){const I=s[g],d=I.fullTrace.filter(P=>h.has(P.fullType));if(d.length===0)return;const A=d.map(P=>P.label),y=n.separator??" / ";m.push({label:A.join(y),value:I.value})}return m};if(o.length===0){if(a.length!==0)throw new Error("Assertion error.");const h=c(new Set(ve));if(h===void 0)throw new Error("Assertion error.");return h}let p=0,v=0;for(;p<o.length;){const h=new Set;n.includeNativeLabel&&h.add(ve);for(let g=0;g<p;++g)h.add(o[g]);h.add(o[v]);const m=c(h);if(m!==void 0&&new Set(m.map(g=>g.label)).size===t.length)return m;v++,v>=o.length&&(p++,v=p)}const f=c(new Set([...o,...a]));if(f===void 0)throw new Error("Assertion error.");return f}const Z="PColumnData/",Y=Z+"ResourceMap",X=Z+"Partitioned/ResourceMap",N=Z+"JsonPartitioned",F=Z+"BinaryPartitioned",De=Z+"Partitioned/",Q=De+"JsonPartitioned",J=De+"BinaryPartitioned";function Fe(t,e,n,r=[],i){if(t===void 0)return!1;switch(t.resourceType.name){case Y:{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 X:{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=Fe(a,e,n,l,i);s=s&&c}}return s}default:throw new Error(`Unknown resource type: ${t.resourceType.name}`)}}function Kt(t,e,n=!1){const r=[];return{isComplete:Fe(t,e,r,[],n),data:r}}const de=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 Y:i=n.keyLength;break;case X:i=n.partitionKeyLength+n.keyLength;break;case N:case F:i=n.partitionKeyLength;break;case J:case Q:i=n.superPartitionKeyLength+n.partitionKeyLength;break}switch(e){case Y:case N:case F:for(let s of t.listInputFields()){e===F&&(s=de(s).baseKey);const o=[...JSON.parse(s)];r.push(o)}break;case X:case J:case Q: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===J&&(l=de(l).baseKey);const c=[...o,...JSON.parse(l)];r.push(c)}}break}return{data:r,keyLength:i}}function Nt(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 je(t){if(t===void 0)return;if(u.isDataInfoEntries(t))return Nt(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 ie(t,e=[]){if(t===void 0||!t.getIsReadyOrError())return;const n=t.resourceType.name,r=t.getDataAsJson();if(e.length>0&&(n===Q||n===J))throw new Error(`Unexpected nested super-partitioned resource: ${n}`);switch(n){case Y:case X:throw new Error(`Only data columns are supported, got: ${n}`);case N:{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 F:{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=de(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 Q:{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!==N)throw new Error(`Expected ${N} inside ${n}, but got ${a.resourceType.name}`);const l=ie(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 J:{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!==F)throw new Error(`Expected ${F} inside ${n}, but got ${a.resourceType.name}`);const l=ie(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 Ve(t){if(t!==void 0){if(u.isDataInfoEntries(t))return t;if(u.isDataInfo(t))return u.dataInfoToEntries(t);if(t instanceof T)return ie(t);throw new Error(`Unexpected input type: ${typeof t}`)}}function Ke(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 Jt{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 $t(t){if(t)return t.map(e=>({type:`split:${u.canonicalizeAxisId(e.axisId)}`,label:e.label,importance:1e6}))}function Ut(t){if(t)return t.map(e=>[e.axisIdx,e.value])}function Bt(t,e){if(!e||e.length===0)return t;const n=[...e].sort((r,i)=>r[0]-i[0]);return Ce({id:t,axisFilters:n})}function Mt(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 Wt(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 se{constructor(){E(this,"defaultProviderStore",[]);E(this,"providers",[new Jt(this.defaultProviderStore)]);E(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}=n??{},a={...o&&(i==null?void 0:i.includeNativeLabel)!==!1?{includeNativeLabel:!0}:{},...i??{}},l=typeof e=="function"?[e]:Array.isArray(e)?e:[e],c=[];for(const f of l){const h=Mt(f);let m;if(h){if(!r)throw new Error("Anchored selectors require an AnchoredIdDeriver to be provided in options.");m=u.resolveAnchors(r.anchors,f,n)}else m=f;const g=new Set,I=[];for(const y of this.providers){const P=y.selectColumns(m);for(const C of P){if(g.has(C.id))throw new Error(`Duplicate column id ${C.id} in provider ${y.constructor.name}`);g.add(C.id),I.push(C)}}if(I.length===0)continue;const d=Wt(f),A=d.length>0;for(const y of I){if(!u.isPColumnSpec(y.spec))continue;const P=y.spec;if(A){const C=Ve(y.data);if(!C){if(s)continue;return}if(!u.isPartitionedDataInfoEntries(C))throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${C.type} for column ${y.id}`);const R=je(C),U=d[d.length-1];if(U>=C.partitionKeyLength)throw new Error(`Not enough partition keys (${C.partitionKeyLength}) for requested split axes (max index ${U}) in column ${P.name}`);const ee=d.map(w=>this.findLabels(u.getAxisId(P.axesSpec[w]))),O=[],L=(w,M)=>{if(M>=d.length){if(O.push([...w]),O.length>1e4)throw new Error("Too many key combinations, aborting.");return}const D=d[M];if(D>=R.length)throw new Error(`Axis index ${D} out of bounds for unique keys array (length ${R.length}) during split key generation for column ${y.id}`);const j=R[D];if(!j||j.length===0){O.length=0;return}for(const te of j)w.push(te),L(w,M+1),w.pop()};if(L([],0),O.length===0)continue;const k=[...P.axesSpec],oe=d.map(w=>w);for(let w=d.length-1;w>=0;w--)k.splice(d[w],1);const B={...P,axesSpec:k};for(const w of O){const M=w.map((D,j)=>{const te=oe[j],Xe=u.getAxisId(P.axesSpec[te]),ae=ee[j],Qe=(ae==null?void 0:ae[D])??String(D);return{axisIdx:te,axisId:Xe,value:D,label:Qe}});c.push({type:"split",originalColumn:y,spec:P,adjustedSpec:B,dataEntries:C,axisFilters:M})}}else c.push({type:"direct",originalColumn:y,spec:P,adjustedSpec:P})}}if(c.length===0)return[];const p=he(c,f=>({spec:f.spec,suffixTrace:f.type==="split"?$t(f.axisFilters):void 0}),a),v=[];for(const{value:f,label:h}of p){const{originalColumn:m,spec:g}=f,I=f.type==="split"?f.axisFilters:void 0,d=Ut(I);let A;r?A=r.deriveS(g,d):A=Bt(m.id,d);let y={...f.adjustedSpec};o&&(y={...y,annotations:{...y.annotations??{},"pl7.app/label":h}}),v.push({id:A,spec:y,data:()=>f.type==="split"?u.entriesToDataInfo(Ke(f.dataEntries,d)):f.originalColumn.data,label:h})}return v}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 ue(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 Ae(t){return u.mapPObjectData(t,e=>e instanceof T?e.handle:u.isDataInfo(e)?u.mapDataInfo(e,n=>n.handle):e)}class Ne{constructor(){E(this,"ctx",b())}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"?he(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 se().addColumnProvider(this).addAxisLabelProvider(this).getColumns(n,{...r,anchorCtx:i})}getCanonicalOptions(e,n,r){const i=this.resolveAnchorCtx(e);if(!i)return;const s=new se().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 T(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 T(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 T(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&&ue(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||!ue(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&&ue(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:Ce(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 G{constructor(){E(this,"ctx");E(this,"args");E(this,"uiState");E(this,"_activeArgsCache");E(this,"resultPool",new Ne);this.ctx=b(),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 re(this.ctx.getAccessorHandleByName(e),n=>new T(n,[e]))}get prerun(){return this.getNamedAccessor(Se)}get outputs(){return this.getNamedAccessor(_e)}findLabels(e){return this.resultPool.findLabels(e)}verifyInlineAndExplicitColumnsSupport(e){var i;const n=e.some(s=>!(s.data instanceof T)||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=>Ae(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=>Ae(r)))}getBlockLabel(e){return this.ctx.getBlockLabel(e)}getCurrentUnstableMarker(){return this.ctx.getCurrentUnstableMarker()}}const H="1.30.11";function Je(t){return t.__renderLambda===!0}function ne(t){if(t!==void 0)return Je(t)?t.handle:t}function V(t){if(t!==void 0)return typeof t=="string"?{__renderLambda:!0,handle:t,retentive:!1}:t}function Gt(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:p}=t;return{initialArgs:e,initialUiState:n,inputsValid:r,outputs:i,renderingMode:s,sdkVersion:o,sections:a,title:l,code:p,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,p])=>[c,V(p)])),inputsValid:V(i),sections:V(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,p])=>[c,V(p)])),inputsValid:V(n),sections:V(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 _{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 _(e,void 0,{},{},z(!0),z([]),void 0,void 0)}output(e,n,r={}){if(typeof n=="function"){const i=`output#${e}`;return W(i,()=>n(new G)),new _(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 _(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"?(W("inputsValid",()=>e(new G)),new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,{__renderLambda:!0,handle:"inputsValid"},this._sections,this._title,this._enrichmentTargets)):new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,e,this._sections,this._title,this._enrichmentTargets)}sections(e){return Array.isArray(e)?this.sections(z(e)):typeof e=="function"?(W("sections",()=>e(new G)),new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,{__renderLambda:!0,handle:"sections"},this._title,this._enrichmentTargets)):new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,e,this._title,this._enrichmentTargets)}title(e){return W("title",()=>e(new G)),new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,this._sections,{__renderLambda:!0,handle:"title"},this._enrichmentTargets)}initialArgs(e){return new _(this._renderingMode,e,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}withArgs(e){return new _(this._renderingMode,e,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}withUiState(e){return new _(this._renderingMode,this._initialArgs,e,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}enriches(e){return W("enrichmentTargets",e),new _(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:H,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:H,renderingMode:this._renderingMode,initialArgs:this._initialArgs,inputsValid:ne(this._inputsValid),sections:ne(this._sections),outputs:Object.fromEntries(Object.entries(this._outputs).map(([n,r])=>[n,ne(r)]))};return Et()?xe({sdkVersion:H}):{config:e}}}function zt(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 $e(t){return JSON.parse(t)}function Ue(t){return t.axesSpec.length===1&&t.name==="pl7.app/label"}function ge(t){return new se().addAxisLabelProvider(t).addColumnProvider(t).getColumns({name:"pl7.app/label",axes:[{}]},{dontWaitAllData:!0})}function me(t,e){const n=[],r=[];for(const a of t)Ue(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(p=>u.matchAxisId(p,c))||i.push(c)}for(const a of n){const l=u.getAxisId(a.spec.axesSpec[0]),c=i.findIndex(p=>u.matchAxisId(p,l));c!==-1&&i.splice(c,1)}const s=(a,l)=>{let c=a.toString();if(l)for(const p in l)c+=p,c+=l[p];return c},o=[];for(const a of e){const l=a.spec.axesSpec[0],c=u.getAxisId(l),p=i.findIndex(v=>u.matchAxisId(v,c));if(p!==-1){const v=i[p],f=Object.keys(v.domain??{}).length,h=Object.keys(l.domain??{}).length;f>h?o.push({id:s(a.id,v.domain),spec:{...a.spec,axesSpec:[{...v,annotations:l.annotations}]},data:a.data}):o.push(a),i.splice(p,1)}}return o}function ye(t){const e=i=>Array.isArray(i),n=i=>i instanceof T,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 Be(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 Ht(t,e,n,r){var c,p;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=((p=n==null?void 0:n.pTableParams)==null?void 0:p.sorting)??[],a=ge(t.resultPool);if(!a)return;const l=me(e.map(u.getColumnIdAndSpec),a);if(ye([...e,...l]))return t.createPTable(Be(e,l,i,s,o,r==null?void 0:r.coreColumnPredicate))}function Me(t){var e;return((e=t.annotations)==null?void 0:e["pl7.app/table/visibility"])==="optional"}function qt(t,e,n,r,i){var g,I;const s=(i==null?void 0:i.coreJoinType)??"full",o=[...(i==null?void 0:i.filters)??[],...((g=r==null?void 0:r.pTableParams)==null?void 0:g.filters)??[]],a=((I=r==null?void 0:r.pTableParams)==null?void 0:I.sorting)??[],l=e.find(d=>n(d.spec));if(!l)return;const c=ge(t.resultPool);if(!c)return;const p=new Set((()=>{var A,y;if(s==="inner")return[];const d=(y=(A=r==null?void 0:r.gridState.columnVisibility)==null?void 0:A.hiddenColIds)==null?void 0:y.map($e).filter(P=>P.type==="column").map(P=>P.id);return d||e.filter(P=>Me(P.spec)).map(P=>P.id)})());p.delete(l.id),[...o.map(d=>d.column),...a.map(d=>d.column)].filter(d=>d.type==="column").map(d=>p.delete(d.id));const v=e.filter(d=>!p.has(d.id)),f=me(v.map(u.getColumnIdAndSpec),c),h=[...l.spec.axesSpec.map(d=>({type:"axis",id:u.getAxisId(d),spec:d})),...[...e,...f].map(d=>({type:"column",id:d.id,spec:d.spec}))];if(!ye([...v,...f]))return;const m=t.createPTable(Be(e,f,s,o,a,i==null?void 0:i.coreColumnPredicate));return{tableSpec:h,tableHandle:m}}function Yt(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]}}const Xt=(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 Qt(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 Zt(t,e){const n=t.spec.axesSpec.map(u.getAxisId);return e.spec.axesSpec.map(u.getAxisId).every(i=>n.some(s=>u.matchAxisId(s,i)&&u.matchAxisId(i,s)))}function We(t,e){const n=t.spec.axesSpec.map(u.getAxisId);return e.spec.axesSpec.map(u.getAxisId).every(i=>n.some(s=>u.matchAxisId(s,i)))}const Ge="pl7.app/graph/isVirtual",pe="pl7.app/label";function Pe(t,e){const n=t.spec.axesSpec.map(u.getAxisId),r=e.spec.axesSpec.map(u.getAxisId);if(Zt(t,e))return[];if(!We(t,e))return[];const o=r.map(v=>n.filter(f=>u.matchAxisId(f,v))),a=Qt(o),l=new Set,c=new Set,p=a.map(v=>{const f=new Set;return v.map((h,m)=>{const g=e.spec.axesSpec[m].domain,I=h.domain;return Object.entries(I??{}).forEach(([d,A])=>{if((g==null?void 0:g[d])===void 0){const y=JSON.stringify([d,A]);f.add(y),l.add(y)}}),{...h,annotations:e.spec.axesSpec[m].annotations}}),f});return[...l].forEach(v=>{p.some(f=>!f.has(v))&&c.add(v)}),a.map((v,f)=>{var d;const h=Xt(e.id,v.map(A=>A.domain)),m=((d=e.spec.annotations)==null?void 0:d[pe])??"",g=[...p[f]].filter(A=>c.has(A)).sort().map(A=>{var y;return(y=JSON.parse(A))==null?void 0:y[1]}).join(" / "),I={...e.spec.annotations,[Ge]:"true"};return(m||g)&&(I[pe]=m&&g?m+" / "+g:m+g),{id:h,spec:{...e.spec,axesSpec:v.map((A,y)=>({...A,annotations:e.spec.axesSpec[y].annotations})),annotations:I},data:e.data}})}function ze(t){const e=[];for(let n=0;n<t.length;n++)for(let r=n+1;r<t.length;r++){const i=t[n],s=t[r];e.push(...Pe(i,s),...Pe(s,i))}return e}function He(t,e){const n=new Set,r=new Map;t.forEach(s=>{n.add(s.id),r.set(u.canonicalizeJson(u.getPColumnSpecId(s.spec)),s)});const i=new Map;for(const s of e){if(n.has(s.id))continue;const o=u.canonicalizeJson(u.getPColumnSpecId(s.spec));if(!r.has(o)){for(const a of r.values())if(We(a,s)){i.set(o,s);break}}}return[...r.values(),...i.values()]}const en=["Int","Long","Float","Double","String","Bytes"];function tn(t,e){if(e===void 0)return;const n=t.resultPool.getData().entries.map(s=>s.obj).filter(u.isPColumn).filter(s=>en.includes(s.spec.valueType)),r=He(e,n),i=[...r,...ze(r)];if(!i.some(s=>s.data instanceof T&&!s.data.getIsReadyOrError()))return t.createPFrame(i)}class nn{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){return await platforma.pFrameDriver.calculateTableData(this.handle,e)}async getUniqueValues(e){return await platforma.pFrameDriver.getUniqueValues(this.handle,e)}}function qe(t){return fe({__isRef:!0,blockId:q(t,"blockId"),name:q(t,"name")})}function rn(t){return fe({ref:qe(q(t,"ref")),label:q(t,"label")})}const sn={sdkVersion:H};function Ye(){return xe({sdkVersion:H})}function on(t){try{return Ye()}catch{return t}}function an(t){if(typeof globalThis.getEnvironmentValue=="function")return globalThis.getEnvironmentValue(t)}exports.Args=rt;exports.BlockModel=_;exports.CurrentSdkInfo=sn;exports.FutureRef=S;exports.IS_VIRTUAL_COLUMN=Ge;exports.It=it;exports.JsRenderInternal=kt;exports.LABEL_ANNOTATION=pe;exports.MainOutputs=st;exports.OutputError=we;exports.PAnnotationLabel=Le;exports.PAnnotationTrace=Ee;exports.PColumnCollection=se;exports.PFrameImpl=nn;exports.RT_BINARY_PARTITIONED=F;exports.RT_BINARY_SUPER_PARTITIONED=J;exports.RT_JSON_PARTITIONED=N;exports.RT_JSON_SUPER_PARTITIONED=Q;exports.RT_RESOURCE_MAP=Y;exports.RT_RESOURCE_MAP_PARTITIONED=X;exports.RenderCtx=G;exports.ResultPool=Ne;exports.StagingOutputs=ot;exports.Trace=Re;exports.TraceEntry=Oe;exports.TreeNodeAccessor=T;exports.UiState=at;exports.allColumnsComputed=ye;exports.and=ht;exports.convertOrParsePColumnData=Ve;exports.createPFrameForGraphs=tn;exports.createPlDataTable=Ht;exports.createPlDataTableSheet=Yt;exports.createPlDataTableV2=qt;exports.deriveLabels=he;exports.downgradeCfgOrLambda=ne;exports.enrichColumnsWithCompatible=He;exports.extractArchiveAndGetURL=It;exports.extractConfig=Gt;exports.filterDataInfoEntries=Ke;exports.flatten=dt;exports.fromPlOption=rn;exports.fromPlRef=qe;exports.getAdditionalColumns=ze;exports.getAllLabelColumns=ge;exports.getBlobContent=vt;exports.getBlobContentAsJson=Pt;exports.getBlobContentAsString=At;exports.getDownloadedBlobContent=Ct;exports.getEnvironmentValue=an;exports.getFromCfg=$;exports.getImmediate=z;exports.getImportProgress=xt;exports.getJsonField=q;exports.getLastLogs=St;exports.getLogHandle=Lt;exports.getMatchingLabelColumns=me;exports.getOnDemandBlobContent=wt;exports.getPartitionKeysList=ke;exports.getPlatformaOrDefault=on;exports.getProgressLog=_t;exports.getProgressLogWithInfo=Tt;exports.getRawPlatformaInstance=Ye;exports.getResourceField=mt;exports.getResourceValueAsJson=yt;exports.getUniquePartitionKeys=je;exports.ifDef=re;exports.isColumnOptional=Me;exports.isConfigLambda=Je;exports.isEmpty=pt;exports.isLabelColumn=Ue;exports.isolate=nt;exports.makeArray=lt;exports.makeObject=fe;exports.mapArrayValues=ct;exports.mapRecordValues=ut;exports.mapResourceFields=bt;exports.not=ft;exports.or=gt;exports.parsePColumnData=ie;exports.parsePTableColumnId=$e;exports.parseResourceMap=Kt;exports.readOutput=Ie;exports.stringifyPTableColumnId=zt;exports.wrapOutputs=tt;Object.keys(u).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>u[t]})});Object.keys(be).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>be[t]})});
1
+ "use strict";var Ze=Object.defineProperty;var et=(t,e,n)=>e in t?Ze(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var O=(t,e,n)=>et(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@milaboratories/pl-model-common"),Ce=require("canonicalize"),K=require("zod"),be=require("@milaboratories/pl-error-like");class we extends Error{constructor(e,n){super(`${e.length}${n?"+":""} errors, first error: `+e[0].message),this.errors=e,this.moreErrors=n}}function Ie(t){if(!t.ok)throw new we(t.errors,t.moreErrors);return t.value}function tt(t){return new Proxy(t,{get(e,n){return Ie(e[n])}})}function x(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null?z(t):t}function $(t){return{type:"GetFromCtx",variable:t}}function nt(t){return{type:"Isolate",cfg:t}}const rt=$("$args"),it=$("$it"),st=$("$prod"),ot=$("$staging"),at=$("$ui");function z(t){return{type:"Immediate",value:t}}function fe(t){const e={};for(const[n,r]of Object.entries(t))e[n]=x(r);return{type:"MakeObject",template:e}}function lt(...t){const e=[];for(const n of t)e.push(x(n));return{type:"MakeArray",template:e}}function q(t,e){return{type:"GetJsonField",source:x(t),field:x(e)}}function ut(t,e,n="$it"){return{type:"MapRecordValues",source:t,mapping:e,itVar:n}}function ct(t,e,n="$it"){return{type:"MapArrayValues",source:t,mapping:e,itVar:n}}function dt(t){return{type:"Flatten",source:t}}function pt(t){return{type:"IsEmpty",arg:t}}function ft(t){return{type:"Not",operand:t}}function ht(t,e){return{type:"And",operand1:t,operand2:e}}function gt(t,e){return{type:"Or",operand1:t,operand2:e}}function mt(t,e){return{type:"GetResourceField",source:x(t),field:x(e)}}function yt(){return function(t){return{type:"GetResourceValueAsJson",source:x(t)}}}function bt(t,e,n="$it"){return{type:"MapResourceFields",source:t,mapping:e,itVar:n}}function vt(t){return{type:"GetBlobContent",source:x(t)}}function At(t){return{type:"GetBlobContentAsString",source:x(t)}}function Pt(){return function(t){return{type:"GetBlobContentAsJson",source:x(t)}}}function Ct(t){return{type:"GetDownloadedBlobContent",source:x(t)}}function wt(t){return{type:"GetOnDemandBlobContent",source:x(t)}}function It(t,e){return{type:"ExtractArchiveAndGetURL",format:e,source:x(t)}}function xt(t){return{type:"GetImportProgress",source:x(t)}}function St(t,e){return{type:"GetLastLogs",source:x(t),lines:e}}function _t(t,e){return{type:"GetProgressLog",source:x(t),patternToSearch:e}}function Tt(t,e){return{type:"GetProgressLogWithInfo",source:x(t),patternToSearch:e}}function Lt(t){return{type:"GetLogHandle",source:x(t)}}function Ot(){return typeof globalThis.getPlatforma<"u"||typeof globalThis.platforma<"u"}function xe(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 Et(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx}function b(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx;throw new Error("Not in config rendering context")}function W(t,e){const n=Et();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 le=new Map;function Rt(t,e){t in b().callbackRegistry||(b().callbackRegistry[t]=n=>{for(const r of le.get(t))r(n)},le.set(t,[])),le.get(t).push(e)}class S{constructor(e,n=r=>r){O(this,"isResolved",!1);O(this,"resolvedValue");this.handle=e,this.postProcess=n,Rt(e,r=>{this.resolvedValue=n(r),this.isResolved=!0})}map(e){return new S(this.handle,n=>e(this.postProcess(n)))}mapDefined(e){return new S(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 re(t,e){return t===void 0?void 0:e(t)}class T{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 re(b().resolveWithCommon(this.handle,e,...n),i=>new T(i,r))}get resourceType(){return b().getResourceType(this.handle)}getInputsLocked(){return b().getInputsLocked(this.handle)}getOutputsLocked(){return b().getOutputsLocked(this.handle)}getIsReadyOrError(){return b().getIsReadyOrError(this.handle)}getIsFinal(){return b().getIsFinal(this.handle)}getError(){const e=[...this.resolvePath,"error"];return re(b().getError(this.handle),n=>new T(n,e))}listInputFields(){return b().listInputFields(this.handle)}listOutputFields(){return b().listOutputFields(this.handle)}listDynamicFields(){return b().listDynamicFields(this.handle)}getKeyValueBase64(e){return b().getKeyValueBase64(this.handle,e)}getKeyValueAsString(e){return b().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 b().getDataBase64(this.handle)}getDataAsString(){return b().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=b().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 T(l,a))}return i}getFileContentAsBase64(){return new S(b().getBlobContentAsBase64(this.handle))}getFileContentAsString(){return new S(b().getBlobContentAsString(this.handle))}getFileContentAsJson(){return new S(b().getBlobContentAsString(this.handle)).mapDefined(e=>JSON.parse(e))}getBlobContentAsBase64(){return this.getFileContentAsBase64()}getBlobContentAsString(){return this.getFileContentAsString()}getFileHandle(){return new S(b().getDownloadedBlobContentHandle(this.handle))}getDownloadedBlobHandle(){return this.getFileHandle()}getRemoteFileHandle(){return new S(b().getOnDemandBlobContentHandle(this.handle))}getOnDemandBlobHandle(){return this.getRemoteFileHandle()}extractArchiveAndGetURL(e){return new S(b().extractArchiveAndGetURL(this.handle,e))}getImportProgress(){return new S(b().getImportProgress(this.handle))}getLastLogs(e){return new S(b().getLastLogs(this.handle,e))}getProgressLog(e){return new S(b().getProgressLog(this.handle,e))}getProgressLogWithInfo(e){return new S(b().getProgressLogWithInfo(this.handle,e))}getLogHandle(){return new S(b().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,p])=>o(c,p))}}const Se="staging",_e="main",Dt={explicitColumnsSupport:!0,inlineColumnsSupport:!0,activeArgs:!0};function Te(t){return typeof t=="object"&&t!==null&&"__awaited_futures__"in t}function ce(t,e,n){if(e.has(n))return;if(e.add(n),typeof n==="object")if(Te(n))n.__awaited_futures__.forEach(i=>t.add(i));else if(Array.isArray(n))for(const i of n)ce(t,e,i);else for(const[,i]of Object.entries(n))i!==n&&ce(t,e,i)}function Ft(t){const e=new Set;return ce(e,new Set,t),e}const kt=Object.freeze(Object.defineProperty({__proto__:null,GlobalCfgRenderCtxFeatureFlags:Dt,MainAccessorName:_e,StagingAccessorName:Se,getAllFutureAwaits:Ft,isFutureAwait:Te},Symbol.toStringTag,{value:"Module"})),Le="pl7.app/label",Oe="pl7.app/trace",Ee=K.z.object({type:K.z.string(),importance:K.z.number().optional(),id:K.z.string().optional(),label:K.z.string()}),Re=K.z.array(Ee),jt=.001,Vt="__LABEL__",ve="__LABEL__@1";function he(t,e,n={}){const r=new Map,i=new Map,s=t.map(h=>{var ee,E;const m=e(h);let g,I,d;"spec"in m&&typeof m.spec=="object"?(g=m.spec,I=m.prefixTrace,d=m.suffixTrace):g=m;const A=(ee=g.annotations)==null?void 0:ee[Le],y=(E=g.annotations)==null?void 0:E[Oe],P=(y?Re.safeParse(JSON.parse(y)).data:void 0)??[],C=[...I??[],...P,...d??[]];if(A){const L={label:A,type:Vt,importance:-2};n.addLabelAsSuffix?C.push(L):C.splice(0,0,L)}const R=[],U=new Map;for(let L=C.length-1;L>=0;--L){const{type:k}=C[L],oe=C[L].importance??0,B=(U.get(k)??0)+1;U.set(k,B);const w=`${k}@${B}`;i.set(w,(i.get(w)??0)+1),r.set(w,Math.max(r.get(w)??Number.NEGATIVE_INFINITY,oe-(C.length-L)*jt)),R.push({...C[L],fullType:w,occurrenceIndex:B})}return R.reverse(),{value:h,spec:g,label:A,fullTrace:R}}),o=[],a=[],l=[...r];l.sort(([,h],[,m])=>m-h);for(const[h]of l)h.endsWith("@1")||i.get(h)===t.length?o.push(h):a.push(h);const c=h=>{const m=[];for(let g=0;g<s.length;g++){const I=s[g],d=I.fullTrace.filter(P=>h.has(P.fullType));if(d.length===0)return;const A=d.map(P=>P.label),y=n.separator??" / ";m.push({label:A.join(y),value:I.value})}return m};if(o.length===0){if(a.length!==0)throw new Error("Assertion error.");const h=c(new Set(ve));if(h===void 0)throw new Error("Assertion error.");return h}let p=0,v=0;for(;p<o.length;){const h=new Set;n.includeNativeLabel&&h.add(ve);for(let g=0;g<p;++g)h.add(o[g]);h.add(o[v]);const m=c(h);if(m!==void 0&&new Set(m.map(g=>g.label)).size===t.length)return m;v++,v>=o.length&&(p++,v=p)}const f=c(new Set([...o,...a]));if(f===void 0)throw new Error("Assertion error.");return f}const Z="PColumnData/",Y=Z+"ResourceMap",X=Z+"Partitioned/ResourceMap",N=Z+"JsonPartitioned",F=Z+"BinaryPartitioned",De=Z+"Partitioned/",Q=De+"JsonPartitioned",J=De+"BinaryPartitioned";function Fe(t,e,n,r=[],i){if(t===void 0)return!1;switch(t.resourceType.name){case Y:{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 X:{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=Fe(a,e,n,l,i);s=s&&c}}return s}default:throw new Error(`Unknown resource type: ${t.resourceType.name}`)}}function Kt(t,e,n=!1){const r=[];return{isComplete:Fe(t,e,r,[],n),data:r}}const de=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 Y:i=n.keyLength;break;case X:i=n.partitionKeyLength+n.keyLength;break;case N:case F:i=n.partitionKeyLength;break;case J:case Q:i=n.superPartitionKeyLength+n.partitionKeyLength;break}switch(e){case Y:case N:case F:for(let s of t.listInputFields()){e===F&&(s=de(s).baseKey);const o=[...JSON.parse(s)];r.push(o)}break;case X:case J:case Q: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===J&&(l=de(l).baseKey);const c=[...o,...JSON.parse(l)];r.push(c)}}break}return{data:r,keyLength:i}}function Nt(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 je(t){if(t===void 0)return;if(u.isDataInfoEntries(t))return Nt(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 ie(t,e=[]){if(t===void 0||!t.getIsReadyOrError())return;const n=t.resourceType.name,r=t.getDataAsJson();if(e.length>0&&(n===Q||n===J))throw new Error(`Unexpected nested super-partitioned resource: ${n}`);switch(n){case Y:case X:throw new Error(`Only data columns are supported, got: ${n}`);case N:{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 F:{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=de(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 Q:{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!==N)throw new Error(`Expected ${N} inside ${n}, but got ${a.resourceType.name}`);const l=ie(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 J:{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!==F)throw new Error(`Expected ${F} inside ${n}, but got ${a.resourceType.name}`);const l=ie(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 Ve(t){if(t!==void 0){if(u.isDataInfoEntries(t))return t;if(u.isDataInfo(t))return u.dataInfoToEntries(t);if(t instanceof T)return ie(t);throw new Error(`Unexpected input type: ${typeof t}`)}}function Ke(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 Jt{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 $t(t){if(t)return t.map(e=>({type:`split:${u.canonicalizeAxisId(e.axisId)}`,label:e.label,importance:1e6}))}function Ut(t){if(t)return t.map(e=>[e.axisIdx,e.value])}function Bt(t,e){if(!e||e.length===0)return t;const n=[...e].sort((r,i)=>r[0]-i[0]);return Ce({id:t,axisFilters:n})}function Mt(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 Wt(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 se{constructor(){O(this,"defaultProviderStore",[]);O(this,"providers",[new Jt(this.defaultProviderStore)]);O(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}=n??{},a={...o&&(i==null?void 0:i.includeNativeLabel)!==!1?{includeNativeLabel:!0}:{},...i??{}},l=typeof e=="function"?[e]:Array.isArray(e)?e:[e],c=[];for(const f of l){const h=Mt(f);let m;if(h){if(!r)throw new Error("Anchored selectors require an AnchoredIdDeriver to be provided in options.");m=u.resolveAnchors(r.anchors,f,n)}else m=f;const g=new Set,I=[];for(const y of this.providers){const P=y.selectColumns(m);for(const C of P){if(g.has(C.id))throw new Error(`Duplicate column id ${C.id} in provider ${y.constructor.name}`);g.add(C.id),I.push(C)}}if(I.length===0)continue;const d=Wt(f),A=d.length>0;for(const y of I){if(!u.isPColumnSpec(y.spec))continue;const P=y.spec;if(A){const C=Ve(y.data);if(!C){if(s)continue;return}if(!u.isPartitionedDataInfoEntries(C))throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${C.type} for column ${y.id}`);const R=je(C),U=d[d.length-1];if(U>=C.partitionKeyLength)throw new Error(`Not enough partition keys (${C.partitionKeyLength}) for requested split axes (max index ${U}) in column ${P.name}`);const ee=d.map(w=>this.findLabels(u.getAxisId(P.axesSpec[w]))),E=[],L=(w,M)=>{if(M>=d.length){if(E.push([...w]),E.length>1e4)throw new Error("Too many key combinations, aborting.");return}const D=d[M];if(D>=R.length)throw new Error(`Axis index ${D} out of bounds for unique keys array (length ${R.length}) during split key generation for column ${y.id}`);const j=R[D];if(!j||j.length===0){E.length=0;return}for(const te of j)w.push(te),L(w,M+1),w.pop()};if(L([],0),E.length===0)continue;const k=[...P.axesSpec],oe=d.map(w=>w);for(let w=d.length-1;w>=0;w--)k.splice(d[w],1);const B={...P,axesSpec:k};for(const w of E){const M=w.map((D,j)=>{const te=oe[j],Xe=u.getAxisId(P.axesSpec[te]),ae=ee[j],Qe=(ae==null?void 0:ae[D])??String(D);return{axisIdx:te,axisId:Xe,value:D,label:Qe}});c.push({type:"split",originalColumn:y,spec:P,adjustedSpec:B,dataEntries:C,axisFilters:M})}}else c.push({type:"direct",originalColumn:y,spec:P,adjustedSpec:P})}}if(c.length===0)return[];const p=he(c,f=>({spec:f.spec,suffixTrace:f.type==="split"?$t(f.axisFilters):void 0}),a),v=[];for(const{value:f,label:h}of p){const{originalColumn:m,spec:g}=f,I=f.type==="split"?f.axisFilters:void 0,d=Ut(I);let A;r?A=r.deriveS(g,d):A=Bt(m.id,d);let y={...f.adjustedSpec};o&&(y={...y,annotations:{...y.annotations??{},"pl7.app/label":h}}),v.push({id:A,spec:y,data:()=>f.type==="split"?u.entriesToDataInfo(Ke(f.dataEntries,d)):f.originalColumn.data,label:h})}return v}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 ue(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 Ae(t){return u.mapPObjectData(t,e=>e instanceof T?e.handle:u.isDataInfo(e)?u.mapDataInfo(e,n=>n.handle):e)}class Ne{constructor(){O(this,"ctx",b())}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"?he(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 se().addColumnProvider(this).addAxisLabelProvider(this).getColumns(n,{...r,anchorCtx:i})}getCanonicalOptions(e,n,r){const i=this.resolveAnchorCtx(e);if(!i)return;const s=new se().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 T(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 T(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 T(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&&ue(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||!ue(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&&ue(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:Ce(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 G{constructor(){O(this,"ctx");O(this,"args");O(this,"uiState");O(this,"_activeArgsCache");O(this,"resultPool",new Ne);this.ctx=b(),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 re(this.ctx.getAccessorHandleByName(e),n=>new T(n,[e]))}get prerun(){return this.getNamedAccessor(Se)}get outputs(){return this.getNamedAccessor(_e)}findLabels(e){return this.resultPool.findLabels(e)}verifyInlineAndExplicitColumnsSupport(e){var i;const n=e.some(s=>!(s.data instanceof T)||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=>Ae(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=>Ae(r)))}getBlockLabel(e){return this.ctx.getBlockLabel(e)}getCurrentUnstableMarker(){return this.ctx.getCurrentUnstableMarker()}}const H="1.30.21";function Je(t){return t.__renderLambda===!0}function ne(t){if(t!==void 0)return Je(t)?t.handle:t}function V(t){if(t!==void 0)return typeof t=="string"?{__renderLambda:!0,handle:t,retentive:!1}:t}function Gt(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:p}=t;return{initialArgs:e,initialUiState:n,inputsValid:r,outputs:i,renderingMode:s,sdkVersion:o,sections:a,title:l,code:p,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,p])=>[c,V(p)])),inputsValid:V(i),sections:V(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,p])=>[c,V(p)])),inputsValid:V(n),sections:V(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 _{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 _(e,void 0,{},{},z(!0),z([]),void 0,void 0)}output(e,n,r={}){if(typeof n=="function"){const i=`output#${e}`;return W(i,()=>n(new G)),new _(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 _(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"?(W("inputsValid",()=>e(new G)),new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,{__renderLambda:!0,handle:"inputsValid"},this._sections,this._title,this._enrichmentTargets)):new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,e,this._sections,this._title,this._enrichmentTargets)}sections(e){return Array.isArray(e)?this.sections(z(e)):typeof e=="function"?(W("sections",()=>e(new G)),new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,{__renderLambda:!0,handle:"sections"},this._title,this._enrichmentTargets)):new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,e,this._title,this._enrichmentTargets)}title(e){return W("title",()=>e(new G)),new _(this._renderingMode,this._initialArgs,this._initialUiState,this._outputs,this._inputsValid,this._sections,{__renderLambda:!0,handle:"title"},this._enrichmentTargets)}initialArgs(e){return new _(this._renderingMode,e,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}withArgs(e){return new _(this._renderingMode,e,this._initialUiState,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}withUiState(e){return new _(this._renderingMode,this._initialArgs,e,this._outputs,this._inputsValid,this._sections,this._title,this._enrichmentTargets)}enriches(e){return W("enrichmentTargets",e),new _(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:H,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:H,renderingMode:this._renderingMode,initialArgs:this._initialArgs,inputsValid:ne(this._inputsValid),sections:ne(this._sections),outputs:Object.fromEntries(Object.entries(this._outputs).map(([n,r])=>[n,ne(r)]))};return Ot()?xe({sdkVersion:H}):{config:e}}}function zt(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 $e(t){return JSON.parse(t)}function Ue(t){return t.axesSpec.length===1&&t.name==="pl7.app/label"}function ge(t){return new se().addAxisLabelProvider(t).addColumnProvider(t).getColumns({name:"pl7.app/label",axes:[{}]},{dontWaitAllData:!0})}function me(t,e){const n=[],r=[];for(const a of t)Ue(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(p=>u.matchAxisId(p,c))||i.push(c)}for(const a of n){const l=u.getAxisId(a.spec.axesSpec[0]),c=i.findIndex(p=>u.matchAxisId(p,l));c!==-1&&i.splice(c,1)}const s=(a,l)=>{let c=a.toString();if(l)for(const p in l)c+=p,c+=l[p];return c},o=[];for(const a of e){const l=a.spec.axesSpec[0],c=u.getAxisId(l),p=i.findIndex(v=>u.matchAxisId(v,c));if(p!==-1){const v=i[p],f=Object.keys(v.domain??{}).length,h=Object.keys(l.domain??{}).length;f>h?o.push({id:s(a.id,v.domain),spec:{...a.spec,axesSpec:[{...v,annotations:l.annotations}]},data:a.data}):o.push(a),i.splice(p,1)}}return o}function ye(t){const e=i=>Array.isArray(i),n=i=>i instanceof T,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 Be(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 Ht(t,e,n,r){var c,p;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=((p=n==null?void 0:n.pTableParams)==null?void 0:p.sorting)??[],a=ge(t.resultPool);if(!a)return;const l=me(e.map(u.getColumnIdAndSpec),a);if(ye([...e,...l]))return t.createPTable(Be(e,l,i,s,o,r==null?void 0:r.coreColumnPredicate))}function Me(t){var e;return((e=t.annotations)==null?void 0:e["pl7.app/table/visibility"])==="optional"}function qt(t,e,n,r,i){var g,I;const s=(i==null?void 0:i.coreJoinType)??"full",o=[...(i==null?void 0:i.filters)??[],...((g=r==null?void 0:r.pTableParams)==null?void 0:g.filters)??[]],a=((I=r==null?void 0:r.pTableParams)==null?void 0:I.sorting)??[],l=e.find(d=>n(d.spec));if(!l)return;const c=ge(t.resultPool);if(!c)return;const p=new Set((()=>{var A,y;if(s==="inner")return[];const d=(y=(A=r==null?void 0:r.gridState.columnVisibility)==null?void 0:A.hiddenColIds)==null?void 0:y.map($e).filter(P=>P.type==="column").map(P=>P.id);return d||e.filter(P=>Me(P.spec)).map(P=>P.id)})());p.delete(l.id),[...o.map(d=>d.column),...a.map(d=>d.column)].filter(d=>d.type==="column").map(d=>p.delete(d.id));const v=e.filter(d=>!p.has(d.id)),f=me(v.map(u.getColumnIdAndSpec),c),h=[...l.spec.axesSpec.map(d=>({type:"axis",id:u.getAxisId(d),spec:d})),...[...e,...f].map(d=>({type:"column",id:d.id,spec:d.spec}))];if(!ye([...v,...f]))return;const m=t.createPTable(Be(e,f,s,o,a,i==null?void 0:i.coreColumnPredicate));return{tableSpec:h,tableHandle:m}}function Yt(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]}}const Xt=(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 Qt(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 Zt(t,e){const n=t.axesSpec.map(u.getAxisId);return e.axesSpec.map(u.getAxisId).every(i=>n.some(s=>u.matchAxisId(s,i)&&u.matchAxisId(i,s)))}function We(t,e){const n=t.axesSpec.map(u.getAxisId);return e.axesSpec.map(u.getAxisId).every(i=>n.some(s=>u.matchAxisId(s,i)))}const Ge="pl7.app/graph/isVirtual",pe="pl7.app/label";function Pe(t,e){const n=t.spec.axesSpec.map(u.getAxisId),r=e.spec.axesSpec.map(u.getAxisId);if(Zt(t.spec,e.spec))return[];if(!We(t.spec,e.spec))return[];const o=r.map(v=>n.filter(f=>u.matchAxisId(f,v))),a=Qt(o),l=new Set,c=new Set,p=a.map(v=>{const f=new Set;return v.map((h,m)=>{const g=e.spec.axesSpec[m].domain,I=h.domain;return Object.entries(I??{}).forEach(([d,A])=>{if((g==null?void 0:g[d])===void 0){const y=JSON.stringify([d,A]);f.add(y),l.add(y)}}),{...h,annotations:e.spec.axesSpec[m].annotations}}),f});return[...l].forEach(v=>{p.some(f=>!f.has(v))&&c.add(v)}),a.map((v,f)=>{var d;const h=Xt(e.id,v.map(A=>A.domain)),m=((d=e.spec.annotations)==null?void 0:d[pe])??"",g=[...p[f]].filter(A=>c.has(A)).sort().map(A=>{var y;return(y=JSON.parse(A))==null?void 0:y[1]}).join(" / "),I={...e.spec.annotations,[Ge]:"true"};return(m||g)&&(I[pe]=m&&g?m+" / "+g:m+g),{id:h,spec:{...e.spec,axesSpec:v.map((A,y)=>({...A,annotations:e.spec.axesSpec[y].annotations})),annotations:I},data:e.data}})}function ze(t){const e=[];for(let n=0;n<t.length;n++)for(let r=n+1;r<t.length;r++){const i=t[n],s=t[r];e.push(...Pe(i,s),...Pe(s,i))}return e}function He(t,e){const n=new Set,r=new Map;t.forEach(s=>{n.add(s.id),r.set(u.canonicalizeJson(u.getPColumnSpecId(s.spec)),s)});const i=new Map;for(const s of e){if(n.has(s.id))continue;const o=u.canonicalizeJson(u.getPColumnSpecId(s.spec));if(!r.has(o)){for(const a of r.values())if(We(a.spec,s.spec)){i.set(o,s);break}}}return[...r.values(),...i.values()]}function en(t,e){if(!e)return;const n=t.resultPool.getData().entries.map(s=>s.obj).filter(u.isPColumn),r=He(e,n),i=[...r,...ze(r)];if(!i.some(s=>s.data instanceof T&&!s.data.getIsReadyOrError()))return t.createPFrame(i)}class tn{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){return await platforma.pFrameDriver.calculateTableData(this.handle,e)}async getUniqueValues(e){return await platforma.pFrameDriver.getUniqueValues(this.handle,e)}}function qe(t){return fe({__isRef:!0,blockId:q(t,"blockId"),name:q(t,"name")})}function nn(t){return fe({ref:qe(q(t,"ref")),label:q(t,"label")})}const rn={sdkVersion:H};function Ye(){return xe({sdkVersion:H})}function sn(t){try{return Ye()}catch{return t}}function on(t){if(typeof globalThis.getEnvironmentValue=="function")return globalThis.getEnvironmentValue(t)}exports.Args=rt;exports.BlockModel=_;exports.CurrentSdkInfo=rn;exports.FutureRef=S;exports.IS_VIRTUAL_COLUMN=Ge;exports.It=it;exports.JsRenderInternal=kt;exports.LABEL_ANNOTATION=pe;exports.MainOutputs=st;exports.OutputError=we;exports.PAnnotationLabel=Le;exports.PAnnotationTrace=Oe;exports.PColumnCollection=se;exports.PFrameImpl=tn;exports.RT_BINARY_PARTITIONED=F;exports.RT_BINARY_SUPER_PARTITIONED=J;exports.RT_JSON_PARTITIONED=N;exports.RT_JSON_SUPER_PARTITIONED=Q;exports.RT_RESOURCE_MAP=Y;exports.RT_RESOURCE_MAP_PARTITIONED=X;exports.RenderCtx=G;exports.ResultPool=Ne;exports.StagingOutputs=ot;exports.Trace=Re;exports.TraceEntry=Ee;exports.TreeNodeAccessor=T;exports.UiState=at;exports.allColumnsComputed=ye;exports.and=ht;exports.convertOrParsePColumnData=Ve;exports.createPFrameForGraphs=en;exports.createPlDataTable=Ht;exports.createPlDataTableSheet=Yt;exports.createPlDataTableV2=qt;exports.deriveLabels=he;exports.downgradeCfgOrLambda=ne;exports.enrichColumnsWithCompatible=He;exports.extractArchiveAndGetURL=It;exports.extractConfig=Gt;exports.filterDataInfoEntries=Ke;exports.flatten=dt;exports.fromPlOption=nn;exports.fromPlRef=qe;exports.getAdditionalColumns=ze;exports.getAllLabelColumns=ge;exports.getBlobContent=vt;exports.getBlobContentAsJson=Pt;exports.getBlobContentAsString=At;exports.getDownloadedBlobContent=Ct;exports.getEnvironmentValue=on;exports.getFromCfg=$;exports.getImmediate=z;exports.getImportProgress=xt;exports.getJsonField=q;exports.getLastLogs=St;exports.getLogHandle=Lt;exports.getMatchingLabelColumns=me;exports.getOnDemandBlobContent=wt;exports.getPartitionKeysList=ke;exports.getPlatformaOrDefault=sn;exports.getProgressLog=_t;exports.getProgressLogWithInfo=Tt;exports.getRawPlatformaInstance=Ye;exports.getResourceField=mt;exports.getResourceValueAsJson=yt;exports.getUniquePartitionKeys=je;exports.ifDef=re;exports.isColumnOptional=Me;exports.isConfigLambda=Je;exports.isEmpty=pt;exports.isLabelColumn=Ue;exports.isolate=nt;exports.makeArray=lt;exports.makeObject=fe;exports.mapArrayValues=ct;exports.mapRecordValues=ut;exports.mapResourceFields=bt;exports.not=ft;exports.or=gt;exports.parsePColumnData=ie;exports.parsePTableColumnId=$e;exports.parseResourceMap=Kt;exports.readOutput=Ie;exports.stringifyPTableColumnId=zt;exports.wrapOutputs=tt;Object.keys(u).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>u[t]})});Object.keys(be).forEach(t=>{t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>be[t]})});
2
2
  //# sourceMappingURL=index.js.map