react-semaphor 0.1.456 → 0.1.459
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/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +1 -1
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +2 -2
- package/dist/chunks/{dashboard-briefing-launcher-DPbSnj9m.js → dashboard-briefing-launcher-ClCj98sq.js} +5 -5
- package/dist/chunks/{dashboard-briefing-launcher-B_ZDOOzA.cjs → dashboard-briefing-launcher-DHtEouuH.cjs} +1 -1
- package/dist/chunks/{dashboard-controls-yOJOMobf.js → dashboard-controls-B8gsKlxc.js} +5 -5
- package/dist/chunks/{dashboard-controls-BBnq7SH-.cjs → dashboard-controls-VRShl9J0.cjs} +1 -1
- package/dist/chunks/{dashboard-json-BEw43pFy.cjs → dashboard-json-BhvPMpZA.cjs} +1 -1
- package/dist/chunks/{dashboard-json-ChYuh43q.js → dashboard-json-i_Auue_K.js} +3 -3
- package/dist/chunks/{edit-dashboard-visual-DvAI9rwj.js → edit-dashboard-visual-B3JF0fe4.js} +648 -642
- package/dist/chunks/{edit-dashboard-visual-DDVhyor8.cjs → edit-dashboard-visual-DWWyT55u.cjs} +10 -10
- package/dist/chunks/{editor-action-buttons-BnMAJDMZ.cjs → editor-action-buttons-BTlCsP63.cjs} +1 -1
- package/dist/chunks/{editor-action-buttons-FCsvW-0C.js → editor-action-buttons-C9x3nGnb.js} +3 -3
- package/dist/chunks/{index-DrYILnh0.js → index-BIFLI8ul.js} +1 -1
- package/dist/chunks/{index-xki38iaF.js → index-BS2-ZZGf.js} +11182 -11140
- package/dist/chunks/{index-DEwVo0GH.cjs → index-DHF-2AqS.cjs} +4 -4
- package/dist/chunks/{index-C99Ow35Y.cjs → index-k8tEp0ys.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-DhyQXxKq.cjs → pivot-header-presentation-B9nXXKlW.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-ckYOQ4aZ.js → pivot-header-presentation-D-0jvUwn.js} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-sjzIOpvp.js → pivot-result-lifecycle-CHWEGU2o.js} +60 -58
- package/dist/chunks/{pivot-result-lifecycle-DmcF1ris.cjs → pivot-result-lifecycle-DTLRuDEW.cjs} +1 -1
- package/dist/chunks/{report-preferences-dialog-VRe-9gct.js → report-preferences-dialog-BDpkcUtz.js} +2 -2
- package/dist/chunks/{report-preferences-dialog-CdHVi8_W.cjs → report-preferences-dialog-BK0yAJnQ.cjs} +1 -1
- package/dist/chunks/{switch-BOBLNHUj.js → switch-DQR-Va05.js} +457 -439
- package/dist/chunks/{switch-BHOdIXq3.cjs → switch-f3TuZNLr.cjs} +16 -16
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +2 -2
- package/dist/format-utils/index.cjs +3 -3
- package/dist/format-utils/index.js +81 -80
- package/dist/index.cjs +1 -1
- package/dist/index.js +6 -6
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +2 -2
- package/dist/types/briefings.d.ts +2 -0
- package/dist/types/dashboard-authoring.d.ts +2 -0
- package/dist/types/dashboard.d.ts +2 -0
- package/dist/types/format-utils.d.ts +6 -0
- package/dist/types/main.d.ts +2 -0
- package/dist/types/shared.d.ts +2 -0
- package/dist/types/surfboard.d.ts +2 -0
- package/dist/types/types.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var vt=Object.defineProperty;var bt=(e,r,t)=>r in e?vt(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var R=(e,r,t)=>bt(e,typeof r!="symbol"?r+"":r,t);const $=require("./pivot-result-lifecycle-
|
|
1
|
+
"use strict";var vt=Object.defineProperty;var bt=(e,r,t)=>r in e?vt(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var R=(e,r,t)=>bt(e,typeof r!="symbol"?r+"":r,t);const $=require("./pivot-result-lifecycle-DTLRuDEW.cjs"),pe=require("../value-format-preferences/index.cjs"),q=require("./validators-BDYprKI9.cjs");require("./analyze-result-contract-LPDNldic.cjs");const V=require("./saved-temporal-bucket-format-CFfWXRl9.cjs"),M=require("./pivot-result-identity-Bb4EixVN.cjs"),Ee=require("./temporal-bucket-contract-D2-93DGr.cjs"),Y=require("./temporal-bucket-DHY1y9lq.cjs"),L=require("./canonical-result-keys-BA0HCP4e.cjs");require("./temporal-bucket-authoring-o3Emn05L.cjs");const xe=require("./raw-temporal-contract-BtjH_G-d.cjs"),Re=`import pandas as pd
|
|
2
2
|
df = pd.DataFrame(data) # 'data' contains the query result
|
|
3
3
|
result = df.to_dict('records') # must return 'result' as [dict] type
|
|
4
4
|
`;function It(e){return{databaseName:(e==null?void 0:e.lastSelectedDatabase)||"",schemaName:(e==null?void 0:e.lastSelectedSchema)||"",tableName:(e==null?void 0:e.lastSelectedTable)||"",datamodelId:(e==null?void 0:e.datamodelId)||""}}function j(e){return e===Re?"":e}function J(e,r=e.config){return L.resolveTemporalResultOwner({hasExecutableConfig:V.hasValidCardConfig(r),sql:e.sql,normalizedPython:j(e.python||"")})}class Fe extends Error{constructor(t){super(`ambiguous_temporal_grain: Temporal field "${t}" has saved presentation but no valid grouping grain. Reconfigure and resave the field.`);R(this,"code","ambiguous_temporal_grain");R(this,"fieldId");this.name="AmbiguousGroupedTemporalGrainError",this.fieldId=t}}function Tt(e){return V.hasSavedTemporalBucketPresentation(e)||e.semanticTemporalPresentation!=null}function Ae(e){if(!e.id||!["date","datetime"].includes(q.normalizeAnalyticsCatalogDataType(e.dataType)))return;if(q.isSemaphorTimeGrain(e.granularity))return e;if(!Tt(e))return;if(!V.readSavedTemporalBucketFormat({fieldId:e.id,dataType:e.dataType,granularity:e.granularity,format:e.format,dateFormat:e.dateFormat,customFormat:e.customFormat}).ok)throw new Fe(e.id);return{...e,granularity:"day"}}function ye(e){const r=e.cardConfig??e.card.config;if(!r||!e.supportsCardType(e.card.type)||L.resolveTemporalResultOwner({hasExecutableConfig:V.hasValidCardConfig(r),sql:e.card.sql,normalizedPython:j(e.card.python||"")})!=="config")return;const t=[...(r.groupByColumns||[]).map(n=>({...n,role:"groupby"})),...e.card.type==="pivotTable"?(r.pivotByColumns||[]).map(n=>({...n,role:"pivotby"})):[]];return{cardType:e.card.type,cardConfig:r,fields:t.flatMap(n=>{const o=Ae(n);return o?[o]:[]})}}function Ct(e){return ye({...e,supportsCardType:r=>r==="table"})}function wt(e){return ye({...e,supportsCardType:L.isSemaphorCartesianChartType})}function Be(e){return ye({...e,supportsCardType:r=>r!=="detailTable"&&L.supportsCanonicalDashboardTemporalResult(r)})}const $e=new WeakMap;function Pe(e){const r=$e.get(e);if(r)return r;const t=$.parseCanonicalPivotResultTransport(e);return $e.set(e,t),t}function H(e,r){const t=e??[],n=r??[];return t.length===n.length&&t.every((o,a)=>o===n[a])}function De(e,r){const t=$.derivePivotResultContractExpectations({groupByFields:r.groupByColumns,metricFields:r.metricColumns,pivotByFields:r.pivotByColumns,detailFields:r.detailColumns});return H(e.expectedRoleFieldIds.groupby,t.expectedRoleFieldIds.groupby)&&H(e.expectedRoleFieldIds.metric,t.expectedRoleFieldIds.metric)&&H(e.expectedRoleFieldIds.pivotby,t.expectedRoleFieldIds.pivotby)&&H(e.expectedRoleFieldIds.detail,t.expectedRoleFieldIds.detail)&&H(e.expectedMetricAliases,t.expectedMetricAliases)}class Et extends Error{constructor(t){super(`missing_resolved_temporal_format: Saved presentation is missing temporal field "${t.fieldId}" for card "${t.cardId}". Resave the report or Briefing to capture the current dashboard presentation.`);R(this,"code","missing_resolved_temporal_format");R(this,"deliveryBlocking",!0);R(this,"dashboardId");R(this,"cardId");R(this,"fieldId");this.name="MissingResolvedTemporalPresentationError",this.dashboardId=t.dashboardId,this.cardId=t.cardId,this.fieldId=t.fieldId}}class ce extends Error{constructor(t){super(`missing_temporal_bucket_metadata: Result column "${t.columnKey}" is missing temporal bucket metadata for field "${t.fieldId}" on card "${t.cardId}". Refresh the report and resave the delivery if the problem persists.`);R(this,"code","missing_temporal_bucket_metadata");R(this,"deliveryBlocking",!0);R(this,"cardId");R(this,"fieldId");R(this,"columnKey");this.name="MissingTemporalResultMetadataError",this.cardId=t.cardId,this.fieldId=t.fieldId,this.columnKey=t.columnKey}}class K extends Error{constructor(t,n,o){super(`${t}: ${n}`);R(this,"deliveryBlocking",!0);this.code=t,this.context=o,this.name="DashboardTemporalBoundaryError"}}function Me(e,r){return`${r}:${e}`}function Oe(e){var r,t;return(t=(r=e.presentation)==null?void 0:r.byFieldRole)==null?void 0:t.get(Me(e.fieldId,e.role))}function $t(e){var t;if((((t=e.cardConfig.metricColumns)==null?void 0:t.length)||0)>0||e.binding.role!=="metric")return!1;const r=e.binding.outputKey||e.binding.rawKey;return e.columns.some(n=>{var o;return n.role==="measure"&&n.dataType==="number"&&(n.key===r||((o=n.pivotIdentity)==null?void 0:o.metricId)===q.SEMAPHOR_GENERATED_COUNT_METRIC_ID)})}function kt(e,r){return!r||r.byColumnKey.size===0?e.map(t=>({...t})):e.map(t=>{const n={...t};return r.byColumnKey.forEach((o,a)=>{Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=he({value:t[a],presentation:o}))}),n})}function St(e){var u;if(!e.result||typeof e.result!="object")return!1;const r=e.result;if(e.expectedResultOwner!==void 0&&r.resultOwner!==e.expectedResultOwner)return!1;const t=e.activation;if(!t||t.cardType!=="pivotTable"&&t.fields.length===0)return!0;const n=Array.isArray(r.records)?r.records.length:void 0,o=(t.cardConfig.pivotByColumns||[]).map(d=>d.id);if(t.cardType==="pivotTable")try{const d=Pe(r);if(!De(d.pivotResultContract,t.cardConfig))return!1;if(d.pivotResultState==="loaded_empty")return!0;const v=d.columns.filter(T=>d.pivotResultContract.columnKinds[T.key]==="pivot_metric"),h=v.filter(T=>{var g;return(((g=T.pivotIdentity)==null?void 0:g.members.length)??0)>0}),b=v.length>0&&v.every(T=>{var g;return((g=T.pivotIdentity)==null?void 0:g.members.length)===0&&M.isPivotEmptyTupleAllowed({expectedPivotFieldIds:o,classification:d.pivotResultContract.columnClassifications[T.key]})});return t.fields.every(T=>{var S;const g=M.resolveQueryColumnKeyMapEntry(d.columnKeyMap,T.id,T.role);if(!g)return!1;if(g.role==="pivotby"){const x=h.flatMap(B=>{var G;return((G=B.pivotIdentity)==null?void 0:G.members.filter(gt=>gt.fieldId===T.id))??[]});return x.length===0?b:x.every(B=>{var G;return((G=B.temporalBucket)==null?void 0:G.granularity)===T.granularity})}const C=d.columns.find(x=>x.key===(g.outputKey||g.rawKey));return((S=C==null?void 0:C.temporalBucket)==null?void 0:S.granularity)===T.granularity})}catch(d){if(d instanceof $.PivotResultLifecycleError)return!1;throw d}if(n===0)return!0;const a=r.columnKeyMap;if(!a||!a.byRole||typeof a.byRole!="object"||Array.isArray(a.byRole))return!1;const i=[...(t.cardConfig.groupByColumns||[]).map(d=>({field:d,role:"groupby"})),...(t.cardConfig.metricColumns||[]).map(d=>({field:d,role:"metric"})),...(t.cardConfig.pivotByColumns||[]).map(d=>({field:d,role:"pivotby"})),...(t.cardConfig.detailColumns||[]).map(d=>({field:d,role:"detail"}))],c=new Set(i.map(({field:d,role:v})=>`${v}:${d.id}`)),m=new Map((r.columns||[]).map(d=>[d.key,d])),l=M.resolveQueryColumnKeyMapEntry(a,q.SEMAPHOR_GENERATED_COUNT_METRIC_ID,"metric");if(l){if(!$t({cardConfig:t.cardConfig,binding:l,columns:r.columns||[]}))return!1;c.add(`metric:${q.SEMAPHOR_GENERATED_COUNT_METRIC_ID}`)}const s=Object.entries(a.byRole).flatMap(([d,v])=>Object.keys(v||{}).map(h=>`${d}:${h}`));if(s.length!==c.size||s.some(d=>!c.has(d))||i.some(({field:d,role:v})=>!M.resolveQueryColumnKeyMapEntry(a,d.id,v)))return!1;try{M.requirePivotResultColumnIdentities((r.columns||[]).map(d=>({key:d.key,pivotIdentity:d.pivotIdentity})),{expectedPivotFieldIds:o,columnClassifications:r.columnMetadata})}catch(d){if(d instanceof M.PivotResultIdentityError)return!1;throw d}const f=(r.columns||[]).filter(d=>{const v=d.pivotIdentity;return!!(v&&v.members.length>0)});return n!==0&&((u=t.cardConfig.pivotByColumns)!=null&&u.length)&&f.length===0?!1:t.fields.every(d=>{var b;const v=M.resolveQueryColumnKeyMapEntry(a,d.id,d.role);if(!v)return!1;if(v.role==="pivotby"){const g=f.flatMap(C=>{var S;return((S=C.pivotIdentity)==null?void 0:S.members)??[]}).filter(C=>C.fieldId===d.id);return f.length===0?n===0:g.length>0&&g.every(C=>{var S;return((S=C.temporalBucket)==null?void 0:S.granularity)===d.granularity})}const h=m.get(v.outputKey||v.rawKey);return((b=h==null?void 0:h.temporalBucket)==null?void 0:b.granularity)===d.granularity})}function re(e,r){const t=e.semanticTemporalPresentation,n=r==="card"?{format:e.format,dateFormat:e.dateFormat}:{format:t==null?void 0:t.format};if(!V.hasSavedTemporalBucketPresentation(n))return;const o=V.readSavedTemporalBucketFormat({fieldId:e.id,dataType:e.dataType,granularity:r==="semantic"?t==null?void 0:t.granularity:e.granularity,...r==="card"?{format:e.format,dateFormat:e.dateFormat,customFormat:e.customFormat}:{format:t==null?void 0:t.format}});if(!o.ok)throw new Error(o.error.code);return o.format}function _t(e,r,t=pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES){const n=re(e,"card"),o=re(e,"semantic"),a=e.semanticTemporalPresentation;return Y.resolveTemporalBucketPresentation({metadata:r,...n?{cardFormat:n}:{},...o&&a?{semanticFormat:{granularity:a.granularity,format:o}}:{},locale:t.locale,styles:{dateStyle:t.dateStyle,dateTime:t.dateTime}})}function Ke(e,r=Y.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,t="en-US"){var i;const n=re(e,"card"),o=((i=e.semanticTemporalPresentation)==null?void 0:i.granularity)===e.granularity?re(e,"semantic"):void 0,a=n&&n.presentation.mode!=="auto"?n:o&&o.presentation.mode!=="auto"?o:{presentation:{mode:"auto"}};return a.presentation.mode==="auto"?{type:"temporal_bucket",locale:t,presentation:{mode:"auto",styles:r}}:{type:"temporal_bucket",locale:t,presentation:a.presentation}}function xt(e){const r=e.activation;if(!r)return{byColumnKey:new Map,byFieldId:new Map,byFieldRole:new Map};if(e.resultRowCount===0)return{byColumnKey:new Map,byFieldId:new Map,byFieldRole:new Map};const t=new Map((e.columns||[]).map(l=>[l.key,l])),n=new Map,o=new Map,a=new Map,i=r.fields.reduce((l,s)=>(l.set(s.id,(l.get(s.id)||0)+1),l),new Map),c=(l,s)=>{a.set(Me(l.id,l.role),s),i.get(l.id)===1&&o.set(l.id,s)},m=(l,s,f)=>{if(s.granularity!==l.granularity)throw new K("invalid_temporal_bucket_metadata",`Result identity "${f}" declares ${s.granularity} buckets for active ${l.granularity} field "${l.id}".`,{cardId:e.card.id,fieldId:l.id,columnKey:f});const u=e.executionSnapshot&&e.dashboardId?$.findResolvedTemporalBucketFormat({snapshot:e.executionSnapshot,scope:{dashboardId:e.dashboardId,cardId:e.card.id,...e.attachmentIndex!==void 0?{attachmentIndex:e.attachmentIndex}:{}},target:{kind:"field",fieldId:l.id,role:l.role}}):void 0;if(e.executionSnapshot&&!u)throw new Et({dashboardId:e.dashboardId,cardId:e.card.id,fieldId:l.id});return{columnKey:f,fieldId:l.id,role:l.role,metadata:s,resolved:u?Y.resolveTemporalBucketPresentation({metadata:s,cardFormat:u,locale:u.locale,...u.presentation.mode==="auto"?{styles:u.presentation.styles}:{}}):_t(l,s,e.valueFormatPreferences??pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES)}};for(const l of r.fields){const s=M.resolveQueryColumnKeyMapEntry(e.columnKeyMap,l.id,l.role);if(!s){if(e.columns===void 0&&e.columnKeyMap===void 0&&(e.resultRowCount===void 0||e.resultRowCount===0))continue;throw new K("missing_temporal_column_binding",`Activated temporal field "${l.id}" has no authoritative result-column binding.`,{cardId:e.card.id,fieldId:l.id,columnKey:l.name})}if(s.role==="pivotby"){const h=(e.columns||[]).filter(S=>S.pivotIdentity!==void 0),b=h.flatMap(S=>{var x;return(((x=S.pivotIdentity)==null?void 0:x.members)||[]).filter(B=>B.fieldId===l.id).map(B=>({column:S,member:B}))});if(b.length===0){if(h.length===0&&(e.card.type!=="pivotTable"||e.resultRowCount===0))continue;throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:s.outputKey||s.rawKey})}const T=b[0];if(!T.member.temporalBucket)throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:T.column.key});const g=Ee.validateTemporalBucketMetadata(T.member.temporalBucket);if(!g.ok||!g.value)throw new K("invalid_temporal_bucket_metadata",g.ok?`Pivot result column "${T.column.key}" has no validated temporal bucket metadata.`:g.error.message,{cardId:e.card.id,fieldId:l.id,columnKey:T.column.key});const C=m(l,g.value,T.column.key);for(const{column:S,member:x}of b)if(!x.temporalBucket||JSON.stringify(x.temporalBucket)!==JSON.stringify(T.member.temporalBucket))throw new K("invalid_temporal_bucket_metadata",`Pivot result column "${S.key}" has contradictory bucket metadata for field "${l.id}".`,{cardId:e.card.id,fieldId:l.id,columnKey:S.key});c(l,C);continue}const f=s.outputKey||s.rawKey,u=t.get(f);if(!(u!=null&&u.temporalBucket))throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:f});const d=Ee.validateTemporalBucketResultColumn(u,{metadataRequired:!0});if(!d.ok||!d.value)throw new K("invalid_temporal_bucket_metadata",d.ok?`Result column "${f}" has no validated temporal bucket metadata.`:d.error.message,{cardId:e.card.id,fieldId:l.id,columnKey:f});const v=m(l,d.value,f);n.set(f,v),c(l,v)}return{byColumnKey:n,byFieldId:o,byFieldRole:a}}function Rt(e){var t,n;const r=e.role?Oe({presentation:e.presentation,fieldId:e.fieldId,role:e.role}):(n=(t=e.presentation)==null?void 0:t.byFieldId)==null?void 0:n.get(e.fieldId);return r?he({value:e.value,presentation:r}):e.value===null||e.value===void 0?"":String(e.value)}function he(e){if(e.value===null||e.value===void 0)return"(Blank)";if(typeof e.value!="string")throw new K("invalid_temporal_bucket_value",`Canonical temporal column "${e.presentation.columnKey}" must contain a string or null.`,{fieldId:e.presentation.fieldId,columnKey:e.presentation.columnKey});try{return Y.formatTemporalBucket({value:e.value,metadata:e.presentation.metadata,format:e.presentation.resolved.format})}catch(r){throw r instanceof Y.TemporalBucketContractError?new K(r.code,r.message,{fieldId:e.presentation.fieldId,columnKey:e.presentation.columnKey}):r}}class _ extends Error{constructor(r,t,n){super(`${r}: ${t}`),this.code=r,this.context=n,Object.setPrototypeOf(this,_.prototype),this.name="RawTemporalPresentationBoundaryError"}}function Ne(){return{type:"raw_temporal",presentation:{mode:"auto"}}}function Ft(e){if(e.locale||e.relative||e.timezone&&e.timezone!=="auto"||e.sourceTimezone&&e.sourceTimezone!=="auto"||e.prefix||e.suffix)throw new _("invalid_raw_temporal_format","Activated raw temporal presentation contains unsupported locale, relative-time, timezone, prefix, or suffix settings.")}function ze(e){const r=e.format;if((r==null?void 0:r.type)==="date"&&(Ft(r),r.pattern))return{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:r.pattern}};if(r)throw new _("invalid_raw_temporal_format",`Raw temporal detail field "${e.id}" has an incompatible authored format.`,{fieldId:e.id});if(e.dateFormat==="custom"){if(!e.customFormat)throw new _("invalid_raw_temporal_format",`Raw temporal detail field "${e.id}" selects a custom pattern but has no customFormat.`,{fieldId:e.id});return{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:e.customFormat}}}return e.dateFormat?{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:e.dateFormat}}:Ne()}function ae(e){if(e!=null&&e.useRelativeTime)return;if(!e)return Ne();if(e.useCustomFormat&&!e.customFormat)throw new _("invalid_raw_temporal_format","Declared SQL temporal presentation selects a custom pattern but has no customFormat.");const r=e.useCustomFormat&&e.customFormat?e.customFormat:e.format,t=e.timezone,n=e.sourceTimezone,o=t&&t!=="auto"?{timezone:t}:void 0,a={sourceTimezone:n&&n!=="auto"?n:"UTC"};return r?{type:"raw_temporal",...o,...a,presentation:{mode:"pattern",dialect:"date_fns",pattern:r}}:{type:"raw_temporal",...o,...a,presentation:{mode:"auto"}}}function At(e){const r=ae(e.settings);if(!r)throw new _("invalid_raw_temporal_format","Relative-time SQL presentation does not have an absolute date preview.");const t=e.valueKind??"date",n={kind:"raw_temporal",valueKind:t},o=e.value??(t==="date"?"2023-05-15":t==="wall_datetime"?"2023-05-15T14:30:45":"2023-05-15T14:30:45Z"),a=$.prepareRawTemporalFormatter({metadata:n,format:$.resolveRawTemporalFormat({format:r,preferences:e.preferences,calendar:{tz:e.calendarTimezone}})})(o);if(!a.ok)throw new _("invalid_raw_temporal_format",a.diagnostic.message);return a.text}function Ve(e){var t;const r=e.effectiveCardConfig??e.card.config;return J(e.card,r)==="freeform"&&!!((t=e.card.sql)!=null&&t.trim())&&!j(e.card.python||"").trim()}function Bt(){return{activatedColumnKeys:new Set,byColumnKey:new Map,byFieldId:new Map}}function ue(e,r){return e===void 0?{kind:"invalid",error:r}:{kind:"invalid",error:e instanceof _?e:e instanceof $.RawTemporalFormatContractError?new _(e.code,e.message,r.context):new _(r.code,e instanceof Error?e.message:r.message,r.context)}}function Le(e){var o;if(e.cardType!=="detailTable"||e.resultOwner!=="config")return{kind:"inactive"};if(!e.result)return{kind:"loading"};const{records:r,columns:t,columnKeyMap:n}=e.result;if(!Array.isArray(r)||!Array.isArray(t)||!n)return ue(void 0,new _("missing_raw_temporal_result_contract","Activated raw temporal detail results require records, columns, and columnKeyMap atomically."));try{const a=t.filter(s=>s.rawTemporal);if(a.length===0)return{kind:"inactive"};const i=new Map((((o=e.effectiveCardConfig)==null?void 0:o.detailColumns)||[]).map(s=>[s.id,s])),c=new Map,m=new Map;for(const s of a){const f=Array.from(i).flatMap(([C,S])=>{const x=M.resolveQueryColumnKeyMapEntry(n,C,"detail");return x&&x.role==="detail"&&(x.outputKey??x.rawKey)===s.key?[{field:S,binding:x}]:[]}),u=f.length===1?f[0]:null;if(!u||typeof u.binding.rawKey!="string"||u.binding.rawKey.trim().length===0||u.binding.outputKey!==void 0&&(typeof u.binding.outputKey!="string"||u.binding.outputKey.trim().length===0))throw new _("missing_raw_temporal_column_binding",`Raw temporal result column "${s.key}" does not have one valid exact detail result binding.`,{columnKey:s.key});const{field:d,binding:v}=u,h=v.outputKey??v.rawKey,b=xe.validateRawTemporalResultColumn(s,{metadataRequired:!0});if(!b)throw new _("invalid_raw_temporal_metadata",`Raw temporal result column "${h}" has no metadata.`,{fieldId:d.id,columnKey:h});const T=$.resolveRawTemporalFormat({format:ze(d),preferences:e.preferences,calendar:e.calendar}),g={fieldId:d.id,columnKey:h,metadata:b,format:T,formatValue:$.prepareRawTemporalFormatter({metadata:b,format:T})};for(let C=0;C<r.length;C+=1)if(!Object.prototype.hasOwnProperty.call(r[C],h)||r[C][h]===void 0)throw new _("missing_raw_temporal_result_contract",`Raw temporal result row ${C} is missing column "${h}".`,{fieldId:d.id,columnKey:h});c.set(h,g),m.set(d.id,g)}const l={activatedColumnKeys:new Set(c.keys()),byColumnKey:c,byFieldId:m};return r.length===0?{kind:"loaded_empty",presentation:l}:{kind:"loaded_valid",presentation:l}}catch(a){return ue(a,new _("invalid_raw_temporal_metadata","Activated raw temporal result metadata is invalid."))}}function Ue(e){var n,o,a;const r=e.effectiveCardConfig??e.card.config,t=J(e.card,r);if(e.card.type==="detailTable"&&t==="config"){const i=!!((n=e.columns)!=null&&n.some(c=>c.rawTemporal));return i&&e.records!==void 0&&!e.columnKeyMap?{kind:"invalid",error:new _("missing_raw_temporal_result_contract","Activated raw temporal detail results require records, columns, and columnKeyMap atomically.")}:e.records!==void 0&&!i?{kind:"inactive"}:ke(Le({cardType:e.card.type,resultOwner:t,effectiveCardConfig:r,result:e.records===void 0||!e.columns||!e.columnKeyMap?void 0:{records:e.records,columns:e.columns,columnKeyMap:e.columnKeyMap},preferences:e.preferences,calendar:e.calendar}),e)}return ke(Dt({resultOwner:t,sql:e.card.sql,normalizedPython:j(e.card.python||""),records:e.records,columns:e.columns,columnSettings:(a=(o=e.card.preferences)==null?void 0:o.tablePrefs)==null?void 0:a.columnSettingsMap,preferences:e.preferences,calendar:e.calendar}),e)}function Pt(e){var n,o,a;const r=e.effectiveCardConfig??e.card.config,t=J(e.card,r);return e.card.type==="detailTable"&&t==="config"?!!((n=e.columns)!=null&&n.some(i=>i.rawTemporal)):Ve(e)?Object.values(((a=(o=e.card.preferences)==null?void 0:o.tablePrefs)==null?void 0:a.columnSettingsMap)||{}).some(i=>{var c;return i.type==="date"&&!((c=i.dateFormat)!=null&&c.useRelativeTime)}):!1}function ke(e,r){if(!r.executionSnapshot||e.kind==="inactive"||e.kind==="loading"||e.kind==="invalid")return e;if(!r.dashboardId)return{kind:"invalid",error:new _("missing_raw_temporal_result_contract","A dashboard ID is required to resolve the captured raw temporal presentation.")};const t=new Map,n=new Map;for(const o of e.presentation.activatedColumnKeys){const a=$.findResolvedRawTemporalFormat({snapshot:r.executionSnapshot,scope:{dashboardId:r.dashboardId,cardId:r.card.id,...r.attachmentIndex!==void 0?{attachmentIndex:r.attachmentIndex}:{}},target:{kind:"column",columnKey:o}});if(!a)return{kind:"invalid",error:new $.MissingResolvedRawTemporalFormatError(o)};const i=e.presentation.byColumnKey.get(o);if(!i)continue;const c={...i,format:a,formatValue:$.prepareRawTemporalFormatter({metadata:i.metadata,format:a})};t.set(i.columnKey,c),i.fieldId&&n.set(i.fieldId,c)}return{...e,presentation:{activatedColumnKeys:e.presentation.activatedColumnKeys,byColumnKey:t,byFieldId:n}}}function Dt(e){var t,n;if(e.resultOwner!=="freeform"||!((t=e.sql)!=null&&t.trim())||(n=e.normalizedPython)!=null&&n.trim())return{kind:"inactive"};const r=Object.entries(e.columnSettings||{}).filter(([,o])=>{var a;return o.type==="date"&&!((a=o.dateFormat)!=null&&a.useRelativeTime)});if(r.length===0)return{kind:"inactive"};if(!e.records)return{kind:"loading"};try{const o=new Map,a=new Set(r.map(([l])=>l)),i=new Map,c=[...e.columns||[]];for(const[l,s]of r){const f=ae(s.dateFormat);if(!f)continue;const u=$.classifyDeclaredSqlTemporalColumn({columnKey:l,values:e.records.map(b=>{if(!Object.prototype.hasOwnProperty.call(b,l))throw new _("missing_raw_temporal_result_contract",`Declared SQL temporal column "${l}" is absent from a physical result row.`,{columnKey:l});const T=b[l];return T===null||typeof T=="string"?T:String(T)})});if(i.set(l,u),u.status!=="classified")continue;let d=c.findIndex(b=>b.key===l);if(e.columns&&d<0)throw new _("missing_raw_temporal_result_contract",`Classified SQL temporal column "${l}" is absent from result columns.`,{columnKey:l});d<0&&(d=c.length,c.push({key:l,name:l,label:l,role:"dimension",dataType:"string"}));const v={...c[d],role:"date",dataType:u.metadata.valueKind==="date"?"date":"datetime",rawTemporal:u.metadata};xe.validateRawTemporalResultColumn(v,{metadataRequired:!0}),c[d]=v;const h=$.resolveRawTemporalFormat({format:f,preferences:e.preferences,calendar:e.calendar});o.set(l,{columnKey:l,metadata:u.metadata,format:h,formatValue:$.prepareRawTemporalFormatter({metadata:u.metadata,format:h})})}const m={...Bt(),activatedColumnKeys:a,byColumnKey:o};return e.records.length===0?{kind:"loaded_empty",presentation:m,adaptedColumns:c,sqlClassifications:i}:{kind:"loaded_valid",presentation:m,adaptedColumns:c,sqlClassifications:i}}catch(o){return ue(o,new _("invalid_raw_temporal_format","Declared SQL raw temporal presentation is invalid."))}}function Mt(e){if(e.value!==null&&typeof e.value!="string")return{value:e.value,label:String(e.value),result:{ok:!1,text:String(e.value),diagnostic:{code:"invalid_raw_temporal_value",message:`Raw temporal column "${e.presentation.columnKey}" must contain a string or null.`}}};const r=e.presentation.formatValue(e.value);return{value:e.value,label:r.text,result:r}}function Ot(e){if(!e.result||typeof e.result!="object")return!1;const r=e.result;if(e.expectedResultOwner!==void 0&&r.resultOwner!==e.expectedResultOwner||!Array.isArray(r.records))return!1;const t=Ue({card:e.card,effectiveCardConfig:e.effectiveCardConfig,records:r.records,columns:r.columns,columnKeyMap:r.columnKeyMap,preferences:pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES,calendar:{tz:"UTC"}});return t.kind==="inactive"||t.kind==="loaded_empty"||t.kind==="loaded_valid"}function Se(e){return!e||typeof e!="object"?!1:Array.isArray(e.cards)}function qe(e){if(!e)return null;if(typeof e=="string")try{const r=JSON.parse(e);return Se(r)?r:null}catch{return null}return Se(e)?e:null}function ge(e){var r;return(r=e==null?void 0:e.cards)!=null&&r.length?e.activeCardId&&e.cards.find(t=>t.id===e.activeCardId)||e.cards[0]:null}function Kt(e){var t;const r=(e==null?void 0:e.frameObject)??((t=e==null?void 0:e.visual)==null?void 0:t.frameObject);return ge(qe(r))}function ie(e){if(!(e!=null&&e.expectedType))return"table";const r=Array.isArray(e.expectedType)?e.expectedType[0]:e.expectedType;return zt(r)?r:"table"}const Nt=["bar","horizontalBar","line","area","stackedArea","combo","pie","doughnut","radar","polarArea","bubble","scatter","stackedBar","stackedLine","table","pivotTable","aggregateTable","detailTable","tableBuilder","kpi","pyramid","tornado","range","text","map","funnel","bullet","heatmap","treemap","custom"];function zt(e){return Nt.includes(e)}function Q(e){const r=e.position;if(typeof r=="number")return r;if(typeof r=="string"){const t=r.match(/\d+/);if(t){const n=Number(t[0]);if(!Number.isNaN(n))return n}}return Number.POSITIVE_INFINITY}function W(e){if(typeof e=="number")return{kind:"number",start:e,end:e};if(typeof e=="string"){const r=e.match(/^(\d+)$/);if(r){const o=Number(r[1]);return{kind:"number",start:o,end:o}}const t=e.match(/^(\d+)-(\d+)$/);if(t){const o=Number(t[1]),a=Number(t[2]);return{kind:"range",start:o,end:a}}const n=e.match(/^(\d+)\+$/);if(n)return{kind:"dynamic",start:Number(n[1]),end:Number.POSITIVE_INFINITY}}return null}function je(e){return!e||e.length===0?void 0:[...e].sort((t,n)=>Q(t)-Q(n))[0]}function ve(e,r){if(!e||e.length===0)return;const t=[],n=[],o=[];e.forEach(s=>{const f=W(s.position);f&&(f.kind==="number"?t.push(s):f.kind==="range"?n.push(s):f.kind==="dynamic"&&o.push(s))});const a=t.find(s=>{const f=W(s.position);return(f==null?void 0:f.kind)==="number"&&f.start===r});if(a)return a;const c=n.sort((s,f)=>Q(s)-Q(f)).find(s=>{const f=W(s.position);return(f==null?void 0:f.kind)==="range"&&r>=f.start&&r<=f.end});if(c)return c;const l=o.map(s=>({slot:s,parsed:W(s.position)})).filter(s=>{var f;return((f=s.parsed)==null?void 0:f.kind)==="dynamic"}).sort((s,f)=>{var u,d;return(((u=s.parsed)==null?void 0:u.start)??0)-(((d=f.parsed)==null?void 0:d.start)??0)}).filter(s=>{var f;return r>=(((f=s.parsed)==null?void 0:f.start)??0)}).sort((s,f)=>{var u,d;return(((u=f.parsed)==null?void 0:u.start)??0)-(((d=s.parsed)==null?void 0:d.start)??0)})[0];return l==null?void 0:l.slot}function Vt(e,r){const t=ve(e,r);if(t)return ie(t)}function Ge(e,r){var n;const t=(n=e==null?void 0:e.customCardPreferences)==null?void 0:n.slotIndex;return typeof t=="number"?t:r}function fe(e,r){var t;if(!((t=e==null?void 0:e.customCardPreferences)!=null&&t.url))return!1;if(e.type==="custom"||e.customCardPreferences.visualType==="multiple"||e.customCardPreferences.dataInputCardIds||(e.customCardPreferences.minInputs||0)>1||(e.customCardPreferences.maxInputs||0)>1)return!0;if(r&&r.length>1){const n=r.filter(o=>{var a;return typeof((a=o.customCardPreferences)==null?void 0:a.slotIndex)=="number"});if(n.length>1&&n.some(o=>o.id!==e.id))return!0}return!1}function He(e){const r=[];let t=-1;e.forEach((n,o)=>{const a=Ge(n,o);a>t&&(t=a),r[a]=n??null});for(let n=0;n<=t;n+=1)n in r||(r[n]=null);return r}function Lt(e){return e.map((r,t)=>!r.customCardPreferences||r.customCardPreferences.slotIndex===t?r:{...r,customCardPreferences:{...r.customCardPreferences,slotIndex:t}})}function Ut(e){const r=je(e);if(r)return ie(r)}function qt(e,r,t){if(!e)return;const n=Vt(t,r);return e.type==="custom"&&n?n:e.type}function jt(e,r,t){var v;const n={dataSource:t.dataSource,connectionId:t.connectionId,lastSelectedDatabase:t.lastSelectedDatabase,lastSelectedSchema:t.lastSelectedSchema,lastSelectedTable:t.lastSelectedTable,lastSelectedDatamodelId:t.lastSelectedDatamodelId,datamodelId:t.datamodelId},o={type:"component",visualType:"multiple",url:r.url,componentName:r.name,icon:r.icon,pluginChartType:r.chartType,minInputs:r.minInputs,maxInputs:r.maxInputs},a=r.minInputs||1,c=e.map(h=>({slot:h,parsed:W(h.position)})).filter(h=>h.parsed!==null).reduce((h,b)=>{const T=b.parsed.end;return Number.isFinite(T)?Math.max(h,T):h},-1),m=Math.max(a,c+1),l=je(e),s=l?Q(l):0;let f=!1;const u=[];for(let h=0;h<m;h+=1){const b=ve(e,h),T=ie(b),g=!f&&h===s,C=h,S={...n,id:V.v4(),title:(g?l==null?void 0:l.label:b==null?void 0:b.label)||`Tab ${h+1}`,tabTitle:(g?l==null?void 0:l.label:b==null?void 0:b.label)||`Tab ${h+1}`,description:(g?l==null?void 0:l.description:b==null?void 0:b.description)||"",type:T,sql:"",preferences:{onClickFilter:[{columnIndex:0,expression:""}]},...g&&{customCardPreferences:{...o,slotIndex:C}},...!g&&{customCardPreferences:{slotIndex:C}}};g&&(f=!0),u.push(S)}if(!f&&u.length>0){const h=((v=u[0].customCardPreferences)==null?void 0:v.slotIndex)??0;u[0]={...u[0],type:u[0].type,customCardPreferences:{...o,slotIndex:h}}}const d=u.findIndex(h=>{var b;return!!((b=h.customCardPreferences)!=null&&b.url)});if(d>0){const[h]=u.splice(d,1);u.unshift(h)}return u}function We({frame:e,configCard:r,isMultiInputVisual:t}){var o;if(!t||!r)return e.cards;const n=(o=r.customCardPreferences)==null?void 0:o.dataInputCardIds;return n?Object.keys(n).sort((a,i)=>Number(a)-Number(i)).map(a=>{var c;const i=(c=n[a])==null?void 0:c.cardId;return e.cards.find(m=>m.id===i)||null}):e.cards}function Ye(e,r){return r&&fe(r,e.cards)?r:e.cards.find(t=>fe(t,e.cards))||null}function Qe(e,r){var o,a;if(!e)return null;const t=r==null?void 0:r.visualType;if(t)return t;if(r!=null&&r.slots&&r.slots.length>0||((r==null?void 0:r.minInputs)||0)>1||((r==null?void 0:r.maxInputs)||0)>1||((r==null?void 0:r.dataInputs)||[]).length>1)return"multiple";const n=(o=e.customCardPreferences)==null?void 0:o.visualType;return n||((a=e.customCardPreferences)!=null&&a.dataInputCardIds?"multiple":null)}function Gt(e){return e.visualType==="multiple"||e.slots&&e.slots.length>0||(e.minInputs||0)>1||(e.maxInputs||0)>1||(e.dataInputs||[]).length>1?"multiple":"single"}function Ht(e){return Array.isArray(e)?{records:e}:e}class X extends Error{constructor(t){const n=t.cardId?`card "${t.cardId}"`:t.sheetId?`sheet "${t.sheetId}"`:`dashboard "${t.dashboardId}"`;super(`Unable to resolve ${n} while capturing report presentation. Refresh the authoring page and select the attachment again.`);R(this,"code","temporal_snapshot_target_not_found");R(this,"selection");this.name="TemporalSnapshotSelectionError",this.selection=t}}function Wt(e,r){var o;const t=[],n=new Map;for(const a of r){if(a.dashboardId!==e.id)throw new X(a);const i=(e.sheets||[]).filter(m=>!a.sheetId||a.sheetId===m.id);if(a.sheetId&&i.length===0)throw new X(a);let c=!a.cardId;for(const m of i){const l=(((o=m.document)==null?void 0:o.sections)||[]).flatMap(u=>u.type==="table"||u.type==="chart"?[u.card]:[]),s=(m.frames||[]).flatMap(u=>Yt(u,a.cardId));s.length>0&&(c=!0);const f=[...s,...(m.cards||[]).filter(u=>!a.cardId||a.cardId===u.id),...l.filter(u=>!a.cardId||a.cardId===u.id)];for(const u of f){c=!0;const d=n.get(a.attachmentIndex)??new Set;d.has(u.id)||(d.add(u.id),n.set(a.attachmentIndex,d),t.push({card:u,...a.attachmentIndex!==void 0?{attachmentIndex:a.attachmentIndex}:{}}))}}if(!c)throw new X(a)}return t}function Yt(e,r){var i;const t=r?(i=e.cards)==null?void 0:i.find(c=>c.id===r):ge(e);if(!t)return[];const n=Ye(e,t),o=(e.cards||[]).filter(c=>{var m;return typeof((m=c.customCardPreferences)==null?void 0:m.slotIndex)=="number"}).length>1,a=n!=null&&(Qe(n)==="multiple"||o);return!n||!a?[t]:He(We({frame:e,configCard:n,isMultiInputVisual:!0})).filter(c=>c!==null)}function Qt(e){return Wt(e.dashboard,e.selections).flatMap(({card:r,attachmentIndex:t})=>{var s,f,u,d;const n=((s=e.resolveCardConfig)==null?void 0:s.call(e,r))??r.config,o=Be({card:r,cardConfig:n}),a={dashboardId:e.dashboard.id,cardId:r.id,...t!==void 0?{attachmentIndex:t}:{}},i=o?o.fields.map(v=>({scope:a,target:{kind:"field",fieldId:v.id,role:v.role},format:Ke(v,{dateStyle:e.valueFormatPreferences.dateStyle,dateTime:{...e.valueFormatPreferences.dateTime}},e.valueFormatPreferences.locale)})):[],c=[],m=J(r,n),l=j(r.python||"");if(r.type==="detailTable"&&m==="config"){const v=(n==null?void 0:n.detailColumns)||[],h=[...((n==null?void 0:n.groupByColumns)||[]).map(g=>({field:g,role:"groupby"})),...((n==null?void 0:n.metricColumns)||[]).map(g=>({field:g,role:"metric"})),...((n==null?void 0:n.pivotByColumns)||[]).map(g=>({field:g,role:"pivotby"})),...v.map(g=>({field:g,role:"detail"}))],b=new Map,T=new Set(h.map(({field:g,role:C})=>L.resolveCanonicalResultRawKey(g,C)));for(const{field:g}of h){const C=g.label;C&&b.set(C,(b.get(C)||0)+1)}for(const g of v){const C=q.normalizeAnalyticsCatalogDataType(g.dataType);if(C!=="date"&&C!=="datetime")continue;const S=L.resolveCanonicalDetailResultRawKey(g),x=g.label,B=L.resolveCanonicalResultOutputKey({label:x,labelCount:x&&b.get(x)||0,rawKey:S,rawKeys:T});if(!B)throw new X(a);c.push({scope:a,target:{kind:"column",columnKey:B},format:$.resolveRawTemporalFormat({format:ze(g),preferences:e.valueFormatPreferences,calendar:e.calendar})})}}else if(m==="freeform"&&((f=r.sql)!=null&&f.trim())&&!l.trim())for(const[v,h]of Object.entries(((d=(u=r.preferences)==null?void 0:u.tablePrefs)==null?void 0:d.columnSettingsMap)||{})){if(h.type!=="date")continue;const b=ae(h.dateFormat);b&&c.push({scope:a,target:{kind:"column",columnKey:v},format:$.resolveRawTemporalFormat({format:b,preferences:e.valueFormatPreferences,calendar:e.calendar})})}return[...i,...c]})}function Jt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function P(e,r,t){return Jt(e)?e:(t.push({field:r,message:"Expected an object."}),{})}function D(e,r,t,n){const o=new Set(t);Object.keys(e).forEach(a=>{o.has(a)||n.push({field:`${r}.${a}`,message:"Unexpected property."})})}function N(e,r,t,n,o={}){if(e==null)return;if(typeof e!="string"){n.push({field:r,message:"Expected a string."});return}const a=o.trim===!1?e:e.trim();if(!o.allowEmpty&&a.length===0){n.push({field:r,message:"Expected a non-empty string."});return}if(a.length>t){n.push({field:r,message:`Expected ${t} characters or fewer.`});return}return a}function be(e,r,t){const n=N(e,r,2e3,t);if(n)try{return new URL(n),n}catch{t.push({field:r,message:"Expected an absolute URL."});return}}function _e(e,r,t){const n=P(e,r,t);D(n,r,["tokens","components"],t);const o={};if(n.tokens!==void 0){const a=P(n.tokens,`${r}.tokens`,t);D(a,`${r}.tokens`,["color","typography"],t);const i={};if(a.color!==void 0){const c=P(a.color,`${r}.tokens.color`,t),m=["background","foreground","muted","mutedForeground","border","primary","primaryForeground","positive","negative","warning","info"];D(c,`${r}.tokens.color`,m,t);const l={};m.forEach(s=>{const f=N(c[s],`${r}.tokens.color.${s}`,120,t);f!==void 0&&(l[s]=f)}),i.color=l}if(a.typography!==void 0){const c=P(a.typography,`${r}.tokens.typography`,t);D(c,`${r}.tokens.typography`,["fontFamily","monoFontFamily"],t);const m=N(c.fontFamily,`${r}.tokens.typography.fontFamily`,500,t,{allowEmpty:!0}),l=N(c.monoFontFamily,`${r}.tokens.typography.monoFontFamily`,500,t,{allowEmpty:!0});i.typography={...m!==void 0?{fontFamily:m}:{},...l!==void 0?{monoFontFamily:l}:{}}}o.tokens=i}if(n.components!==void 0){const a=P(n.components,`${r}.components`,t);if(D(a,`${r}.components`,["chart"],t),a.chart!==void 0){const i=P(a.chart,`${r}.components.chart`,t);D(i,`${r}.components.chart`,["palette"],t);let c;i.palette!==void 0&&(Array.isArray(i.palette)?i.palette.length>20?t.push({field:`${r}.components.chart.palette`,message:"Expected 20 colors or fewer."}):c=i.palette.map((m,l)=>N(m,`${r}.components.chart.palette.${l}`,120,t)).filter(m=>m!==void 0):t.push({field:`${r}.components.chart.palette`,message:"Expected an array."})),o.components={chart:c?{palette:c}:{}}}}return o}function Zt(e,r){const t="presentation.appearance",n=P(e,t,r);D(n,t,["version","schemes"],r);const o={};if(n.version!==void 0&&(typeof n.version!="number"||!Number.isFinite(n.version)?r.push({field:`${t}.version`,message:"Expected a number."}):o.version=n.version),n.schemes!==void 0){const a=P(n.schemes,`${t}.schemes`,r);D(a,`${t}.schemes`,["light","dark"],r),o.schemes={...a.light!==void 0?{light:_e(a.light,`${t}.schemes.light`,r)}:{},...a.dark!==void 0?{dark:_e(a.dark,`${t}.schemes.dark`,r)}:{}}}return o}function Xt(e,r){const t="presentation.brandOverrides",n=P(e,t,r);D(n,t,["brandName","logoUrl","link"],r);const o=N(n.brandName,`${t}.brandName`,200,r),a=be(n.logoUrl,`${t}.logoUrl`,r),i=N(n.link,`${t}.link`,120,r);return{...o!==void 0?{brandName:o}:{},...a!==void 0?{logoUrl:a}:{},...i!==void 0?{link:i}:{}}}function er(e,r){const t="presentation.fragments",n=P(e,t,r),o=["preHeaderText","headerBannerHtml","signatureHtml","footerHtml","disclaimerHtml","unsubscribeUrl"];D(n,t,o,r);const a={};return o.forEach(i=>{const c=i==="unsubscribeUrl"?be(n[i],`${t}.${i}`,r):N(n[i],`${t}.${i}`,i==="preHeaderText"?200:5e3,r,{trim:i==="preHeaderText"});c!==void 0&&(a[i]=c)}),a}function tr(e){const r=[],t={};if(e.appearance!==void 0&&(t.appearance=Zt(e.appearance,r)),e.brandOverrides!==void 0&&(t.brandOverrides=Xt(e.brandOverrides,r)),e.fragments!==void 0&&(t.fragments=er(e.fragments,r)),e.viewUrl!==void 0){const n=be(e.viewUrl,"presentation.viewUrl",r);n!==void 0&&(t.viewUrl=n)}return{value:t,issues:r}}const Je=["SUN","MON","TUE","WED","THU","FRI","SAT"],rr=new Map(Je.map((e,r)=>[e,r])),nr={cadence:"weekly",hour:9,minute:0,weekdays:[1]};function or(e){if(typeof e!="string"||e.length===0||e!==e.trim()||/^(?:(?:UTC|GMT)[+-]|[+-]\d{2}:\d{2}$)/.test(e))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}function ar(e){return Number.isInteger(e.minute)&&e.minute>=0&&e.minute<=59&&Number.isInteger(e.hour)&&e.hour>=0&&e.hour<=23}function Ze(e){if(e.length===0)return null;const r=[...e].sort((t,n)=>t-n);return r.some((t,n)=>!Number.isInteger(t)||t<0||t>6||n>0&&t===r[n-1])?null:r}function ir(e){if(!ar(e))throw new Error("Choose a valid schedule time.");const r=`${e.minute} ${e.hour}`;switch(e.cadence){case"daily":return`${r} * * *`;case"weekly":{const t=Ze(e.weekdays);if(!t)throw new Error("Choose at least one weekday.");return`${r} * * ${t.map(n=>Je[n]).join(",")}`}case"twice_monthly":return`${r} 1,15 * *`;case"monthly":return`${r} 1 * *`}}function Xe(e){if(typeof e!="string"||e.length===0)return{ok:!1,issue:"Choose a supported schedule."};if(e!==e.trim()||e.includes(" "))return{ok:!1,issue:"Choose a supported schedule."};const r=e.split(" ");if(r.length!==5)return{ok:!1,issue:"Choose a supported schedule."};const[t,n,o,a,i]=r;if(!/^(0|[1-9]\d?)$/.test(t)||!/^(0|[1-9]\d?)$/.test(n))return{ok:!1,issue:"Choose a supported schedule."};const c=Number(t),m=Number(n);if(c>59||m>23||a!=="*")return{ok:!1,issue:"Choose a supported schedule."};if(o==="*"&&i==="*")return{ok:!0,value:{cadence:"daily",hour:m,minute:c,weekdays:[]}};if(o==="*"&&i!=="*"){const s=i.split(",").map(d=>rr.get(d));if(s.some(d=>d===void 0))return{ok:!1,issue:"Choose a supported schedule."};const f=s,u=Ze(f);return!u||u.some((d,v)=>d!==f[v])?{ok:!1,issue:"Choose a supported schedule."}:{ok:!0,value:{cadence:"weekly",hour:m,minute:c,weekdays:u}}}return o==="1,15"&&i==="*"?{ok:!0,value:{cadence:"twice_monthly",hour:m,minute:c,weekdays:[]}}:o==="1"&&i==="*"?{ok:!0,value:{cadence:"monthly",hour:m,minute:c,weekdays:[]}}:{ok:!1,issue:"Choose a supported schedule."}}function lr(e,r,t){return new Intl.DateTimeFormat(t,{hour:"numeric",minute:"2-digit",timeZone:"UTC"}).format(new Date(Date.UTC(2020,0,1,e,r)))}function cr(e,r){var t;if(e==="UTC")return"UTC";try{return((t=new Intl.DateTimeFormat(r,{timeZone:e,timeZoneName:"longGeneric"}).formatToParts(new Date(Date.UTC(2020,0,1))).find(o=>o.type==="timeZoneName"))==null?void 0:t.value)??e}catch{return null}}function dr(e,r,t="en-US"){const n=Xe(e);if(!n.ok)return null;try{const o=lr(n.value.hour,n.value.minute,t),a=cr(r,t);if(!a)return null;switch(n.value.cadence){case"daily":return`Daily at ${o} ${a}`;case"weekly":{const i=new Intl.DateTimeFormat(t,{weekday:"long",timeZone:"UTC"});return`${n.value.weekdays.map(m=>i.format(new Date(Date.UTC(2023,0,1+m)))).join(" and ")} at ${o} ${a}`}case"twice_monthly":return`On the 1st and 15th at ${o} ${a}`;case"monthly":return`Monthly on the 1st at ${o} ${a}`}}catch{return null}}const sr=new Set(["table","aggregateTable","pivotTable","detailTable"]),mr=new Set(["bar","horizontalBar","line","area","stackedArea","combo","pie","doughnut","radar","polarArea","bubble","scatter","stackedBar","stackedLine","table","pivotTable","aggregateTable","matrixTable","detailTable","kpi","pyramid","tornado","range","map","funnel","bullet","heatmap","treemap","custom"]);function ur(e){var n,o,a;const r=mr.has(e.type)&&(e.type!=="custom"||!!((n=e.customCardPreferences)!=null&&n.url));return e.type==="text"||!r||V.isCardUnconfigured(e)?{formats:[],defaultFormat:null}:{formats:et({cardType:e.type,allowDownload:(o=e.preferences)==null?void 0:o.allowDownload}),defaultFormat:tt({cardType:e.type,allowDownload:(a=e.preferences)==null?void 0:a.allowDownload})}}function et(e){return e.allowDownload===!1?["pdf"]:["pdf","csv"]}function tt(e){return sr.has(e.cardType)&&e.allowDownload!==!1?"csv":"pdf"}function fr(e){return e!=null&&e.role?e.type==="tenant"?e.role==="POWER_USER":["AUTHOR","ADMIN","SUPER_ADMIN"].includes(e.role):!1}function pr(e){return e.canCreate?[...e.scheduledReportAvailable?["scheduled_report"]:[],...e.analyticalBriefingsEnabled?["analytical_briefing"]:[]]:[]}function rt(e){const r=(e==null?void 0:e.channels)??[];return r.length===1&&r[0]==="EMAIL"}function nt(e){return e.body.type==="generated_analysis"?"Analytical briefing":e.body.type==="custom_message"&&e.attachments.length>0&&rt(e.deliveryConfig)?e.scheduleExpr?"Scheduled report":"On-demand report":"Plain briefing"}function yr(e){const r=nt(e),t=r==="Scheduled report"||r==="On-demand report"?"report":"briefing";return{typeLabel:r,noun:t,pluralNoun:t==="report"?"reports":"briefings"}}const ne="BRIEFING",ot=["markdown","html"],oe=["markdown"],ee=20,y={name:500,description:2e3,instruction:5e4,customMessage:5e4,contentTitle:500,contentSummary:2e4,contentText:5e3,contentSql:5e4,contentItem:2e3,contentCell:500,attachmentTitle:500,presentationAudience:1e3,presentationTone:500,presentationFormat:2e3,id:500},F={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:y.contentCell,maxParagraphCharacters:y.contentText,maxFindingCharacters:y.contentText,maxListItems:100,maxKpiTiles:8};function at(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const r=e;if(typeof r.value!="number"||!Number.isFinite(r.value))return!1;const t=r.target;if(t===null||typeof t!="object"||Array.isArray(t))return!1;const n=t;return(n.kind==="metric"&&typeof n.metricId=="string"&&!!n.metricId.trim()||n.kind==="column"&&typeof n.columnKey=="string"&&!!n.columnKey.trim()||n.kind==="matrix_measure"&&typeof n.measureId=="string"&&!!n.measureId.trim())&&$.parseResolvedNumericCanonicalFormat(r.format).ok}function it(e){return e==null?"":at(e)?$.formatNumericCanonical(e.value,e.format):String(e)}function hr(e){return[e.delta,e.percentChange].filter(r=>r!=null).map(it).filter(Boolean).join(" / ")}const lt=new Set(ot),gr=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),de={maxToolCalls:{min:1,max:100},maxPlanningIterations:{min:1,max:10},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},vr=new Set(["letter","legal","a4","a3","tabloid"]),br=new Set(["portrait","landscape"]),Ir=new Set([",",";"," "]),Tr=new Set(["current","all"]),Cr=new Set(["concise","balanced","detailed"]),wr=new Set(["info","positive","warning","critical"]),Er=new Set(["text","number","currency","percent","date","boolean"]),$r=new Set(["left","center","right"]),kr=["pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","allowDownload","theme"];class Z extends Error{constructor(t){super(t.map(n=>`${n.field}: ${n.message}`).join("; "));R(this,"issues");this.name="BriefingContractError",this.issues=t}}function ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e,r,t){e.push({field:r,message:t})}function k(e,r,t){return ct(e)?e:(p(t,r,"Expected an object."),{})}function I(e,r,t,n){const o=new Set(t);Object.keys(e).forEach(a=>{o.has(a)||p(n,r?`${r}.${a}`:a,`Unexpected field "${a}".`)})}function w(e,r,t,n){if(typeof e!="string")return p(n,r,"Expected a string."),"";const o=e.trim();return o?(o.length>t&&p(n,r,`Must be ${t} characters or fewer.`),o):(p(n,r,"Required value cannot be empty."),"")}function E(e,r,t,n){if(e==null)return;if(typeof e!="string"){p(n,r,"Expected a string.");return}const o=e.trim();if(o)return o.length>t&&p(n,r,`Must be ${t} characters or fewer.`),o}function Sr(e,r,t,n){if(typeof e!="string")return p(n,r,"Expected a string."),"";const o=e.trim();return o.length>t&&p(n,r,`Must be ${t} characters or fewer.`),o}function _r(e,r,t){if(e!=null){if(!Number.isInteger(e)||Number(e)<0){p(t,r,"Expected a non-negative integer.");return}return Number(e)}}function A(e,r,t,n={}){if(e==null)return n.required?(p(t,r,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(e))return p(t,r,"Expected an array."),n.required?[]:void 0;const o=[];return e.forEach((a,i)=>{const c=w(a,`${r}.${i}`,y.id,t);c&&!o.includes(c)&&o.push(c)}),n.required&&o.length===0&&p(t,r,"Expected at least one evidence id."),o.length>0||n.required?o:void 0}function U(e,r,t,n){return e==null?r:typeof e!="boolean"?(p(n,t,"Expected a boolean."),r):e}function xr(e,r){return e==null?"ACTIVE":e==="ACTIVE"||e==="PAUSED"||e==="DISABLED"?e:(p(r,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function Rr(e){return e.includes("@")&&e.includes(".")&&!e.includes(" ")}function dt(e,r){if(e==null)return{type:"project"};const t=k(e,"source",r),n=t.type;return n==="project"?(I(t,"source",["type"],r),{type:"project"}):n==="dashboard"?(I(t,"source",["type","dashboardId"],r),{type:"dashboard",dashboardId:w(t.dashboardId,"source.dashboardId",y.id,r)}):(p(r,"source.type","Expected project or dashboard."),{type:"project"})}function st(e,r){const t=k(e,"body",r),n=t.type;return n==="generated_analysis"?(I(t,"body",["type","instruction"],r),{type:"generated_analysis",instruction:w(t.instruction,"body.instruction",y.instruction,r)}):n==="custom_message"?(I(t,"body",["type","message"],r),{type:"custom_message",message:Sr(t.message,"body.message",y.customMessage,r)}):n==="none"?(I(t,"body",["type"],r),{type:"none"}):(p(r,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function Fr(e,r){if(e==null)return[...oe];if(!Array.isArray(e))return p(r,"presentation.artifactFormats","Expected an array."),[...oe];if(e.length===0)return p(r,"presentation.artifactFormats","Choose at least one artifact format."),[];const t=[];return e.forEach((n,o)=>{if(typeof n!="string"||!lt.has(n)){p(r,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}t.includes(n)||t.push(n)}),t}function mt(e,r){if(e==null)return{artifactFormats:[...oe],includeEvidence:!0,includeSql:!0};const t=k(e,"presentation",r);I(t,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format","appearance","brandOverrides","fragments","viewUrl"],r);const n={artifactFormats:Fr(t.artifactFormats,r),includeEvidence:U(t.includeEvidence,!0,"presentation.includeEvidence",r),includeSql:U(t.includeSql,!0,"presentation.includeSql",r)},o=E(t.audience,"presentation.audience",y.presentationAudience,r),a=E(t.tone,"presentation.tone",y.presentationTone,r),i=E(t.format,"presentation.format",y.presentationFormat,r);o&&(n.audience=o),a&&(n.tone=a),i&&(n.format=i);const c=tr(t);return c.issues.forEach(m=>p(r,m.field,m.message)),Object.assign(n,c.value),n}function Ar(e,r,t){return Array.isArray(e)?(e.length===0&&p(t,r,"Expected at least one item."),e.length>F.maxListItems&&p(t,r,`Must have ${F.maxListItems} items or fewer.`),e.slice(0,F.maxListItems).map((n,o)=>w(n,`${r}.${o}`,y.contentItem,t)).filter(Boolean)):(p(t,r,"Expected an array."),[])}function Br(e,r,t){const n=k(e,r,t);if(n.kind==="metric")return I(n,r,["kind","metricId"],t),{kind:"metric",metricId:w(n.metricId,`${r}.metricId`,y.id,t)};if(n.kind==="column")return I(n,r,["kind","columnKey"],t),{kind:"column",columnKey:w(n.columnKey,`${r}.columnKey`,y.id,t)};if(n.kind==="matrix_measure")return I(n,r,["kind","measureId"],t),{kind:"matrix_measure",measureId:w(n.measureId,`${r}.measureId`,y.id,t)};p(t,`${r}.kind`,"Expected metric, column, or matrix_measure.")}function ut(e,r,t){if(e===null||typeof e!="object"||Array.isArray(e))return;const n=k(e,r,t);if(!Object.prototype.hasOwnProperty.call(n,"target")&&!Object.prototype.hasOwnProperty.call(n,"format"))return;I(n,r,["value","target","format"],t),(typeof n.value!="number"||!Number.isFinite(n.value))&&p(t,`${r}.value`,"Expected a finite number.");const o=Br(n.target,`${r}.target`,t),a=$.parseResolvedNumericCanonicalFormat(n.format);if(a.ok||a.issues.forEach(i=>p(t,i.path==="$"?`${r}.format`:`${r}.format.${i.path}`,i.message)),!(typeof n.value!="number"||!Number.isFinite(n.value)||!o||!a.ok))return{value:n.value,target:o,format:a.value}}function O(e,r,t){if(typeof e=="string")return e;if(typeof e=="number"){if(!Number.isFinite(e)){p(t,r,"Expected a finite number.");return}return e}const n=ut(e,r,t);if(n)return n;p(t,r,"Expected a string, number, or structured numeric value.")}function Pr(e,r,t){if(e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return typeof e=="string"&&e.length>y.contentCell?(p(t,r,`Must be ${y.contentCell} characters or fewer.`),e.slice(0,y.contentCell)):typeof e=="number"&&!Number.isFinite(e)?(p(t,r,"Expected a finite number."),null):e;const n=ut(e,r,t);return n||(p(t,r,"Expected a string, number, boolean, structured numeric value, or null."),null)}function Dr(e,r,t){if(!Array.isArray(e))return p(t,r,"Expected an array."),[];e.length===0&&p(t,r,"Expected at least one column."),e.length>F.maxTableColumns&&p(t,r,`Must have ${F.maxTableColumns} columns or fewer.`);const n=new Set;return e.slice(0,F.maxTableColumns).map((o,a)=>{const i=`${r}.${a}`,c=k(o,i,t);I(c,i,["key","label","kind","align"],t);const m=w(c.key,`${i}.key`,y.id,t);m&&(n.has(m)&&p(t,`${i}.key`,"Column key must be unique."),n.add(m));const l=w(c.label,`${i}.label`,y.contentTitle,t),s=z(c.kind,`${i}.kind`,Er,"text, number, currency, percent, date, or boolean",t),f=z(c.align,`${i}.align`,$r,"left, center, or right",t);return{key:m,label:l,...s?{kind:s}:{},...f?{align:f}:{}}})}function Mr(e,r,t,n){if(!Array.isArray(e))return p(n,r,"Expected an array."),[];e.length>F.maxTableRows&&p(n,r,`Must have ${F.maxTableRows} rows or fewer.`);const o=new Set(t.map(a=>a.key).filter(Boolean));return e.slice(0,F.maxTableRows).map((a,i)=>{const c=`${r}.${i}`,m=k(a,c,n);return Object.keys(m).forEach(l=>{o.has(l)||p(n,`${c}.${l}`,`Unexpected table cell "${l}".`)}),Object.fromEntries(t.map(l=>[l.key,Pr(m[l.key]??null,`${c}.${l.key}`,n)]))})}function Or(e,r,t){const n=`content.blocks.${r}`,o=k(e,n,t),a=o.type;if(a==="heading"){I(o,n,["type","text","level","evidenceIds"],t);const i=o.level===void 0||o.level===null?void 0:o.level===2||o.level===3?o.level:void 0;o.level!==void 0&&o.level!==null&&i===void 0&&p(t,`${n}.level`,"Expected 2 or 3.");const c=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"heading",text:w(o.text,`${n}.text`,y.contentTitle,t),...i?{level:i}:{},...c?{evidenceIds:c}:{}}}if(a==="paragraph"){I(o,n,["type","text","evidenceIds"],t);const i=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"paragraph",text:w(o.text,`${n}.text`,y.contentText,t),...i?{evidenceIds:i}:{}}}if(a==="finding"){I(o,n,["type","title","text","severity","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t),c=z(o.severity,`${n}.severity`,wr,"info, positive, warning, or critical",t);return{type:"finding",...i?{title:i}:{},text:w(o.text,`${n}.text`,y.contentText,t),...c?{severity:c}:{},evidenceIds:A(o.evidenceIds,`${n}.evidenceIds`,t,{required:!0})??[]}}if(a==="bullets"||a==="actions"||a==="limitations"){I(o,n,["type","title","items","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t),c=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:a,...i?{title:i}:{},items:Ar(o.items,`${n}.items`,t),...c?{evidenceIds:c}:{}}}if(a==="metric"){I(o,n,["type","label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const i=O(o.value,`${n}.value`,t)??"";i===""&&p(t,`${n}.value`,"Expected a non-empty string, number, or structured numeric value.");const c=o.previousValue===void 0||o.previousValue===null?o.previousValue:O(o.previousValue,`${n}.previousValue`,t),m=o.delta===void 0||o.delta===null?o.delta:O(o.delta,`${n}.delta`,t),l=o.percentChange===void 0||o.percentChange===null?o.percentChange:O(o.percentChange,`${n}.percentChange`,t),s=E(o.unit,`${n}.unit`,y.contentTitle,t),f=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"metric",label:w(o.label,`${n}.label`,y.contentTitle,t),value:i,...c!==void 0?{previousValue:c}:{},...m!==void 0?{delta:m}:{},...l!==void 0?{percentChange:l}:{},...s?{unit:s}:{},...f?{evidenceIds:f}:{}}}if(a==="kpi_grid"){I(o,n,["type","title","tiles","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t),c=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||p(t,`${n}.tiles`,"Expected an array."),c.length===0&&p(t,`${n}.tiles`,"Expected at least one tile."),c.length>F.maxKpiTiles&&p(t,`${n}.tiles`,`Must have ${F.maxKpiTiles} tiles or fewer.`);const m=c.slice(0,F.maxKpiTiles).map((s,f)=>{const u=`${n}.tiles.${f}`,d=k(s,u,t);I(d,u,["label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const v=O(d.value,`${u}.value`,t)??"";v===""&&p(t,`${u}.value`,"Expected a non-empty string, number, or structured numeric value.");const h=d.previousValue===void 0||d.previousValue===null?d.previousValue:O(d.previousValue,`${u}.previousValue`,t),b=d.delta===void 0||d.delta===null?d.delta:O(d.delta,`${u}.delta`,t),T=d.percentChange===void 0||d.percentChange===null?d.percentChange:O(d.percentChange,`${u}.percentChange`,t),g=E(d.unit,`${u}.unit`,y.contentTitle,t),C=A(d.evidenceIds,`${u}.evidenceIds`,t);return{label:w(d.label,`${u}.label`,y.contentTitle,t),value:v,...h!==void 0?{previousValue:h}:{},...b!==void 0?{delta:b}:{},...T!==void 0?{percentChange:T}:{},...g?{unit:g}:{},...C?{evidenceIds:C}:{}}}),l=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"kpi_grid",...i?{title:i}:{},tiles:m,...l?{evidenceIds:l}:{}}}if(a==="progress"){I(o,n,["type","label","value","detail","evidenceIds"],t);const i=typeof o.value=="number"&&Number.isFinite(o.value)?o.value:0;(typeof o.value!="number"||!Number.isFinite(o.value))&&p(t,`${n}.value`,"Expected a finite number.");const c=E(o.detail,`${n}.detail`,y.contentText,t),m=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"progress",label:w(o.label,`${n}.label`,y.contentTitle,t),value:i,...c?{detail:c}:{},...m?{evidenceIds:m}:{}}}if(a==="table"){I(o,n,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],t);const i=Dr(o.columns,`${n}.columns`,t),c=E(o.title,`${n}.title`,y.contentTitle,t),m=E(o.id,`${n}.id`,y.id,t),l=E(o.caption,`${n}.caption`,y.contentItem,t),s=_r(o.totalRows,`${n}.totalRows`,t),f=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"table",...m?{id:m}:{},...c?{title:c}:{},columns:i,rows:Mr(o.rows,`${n}.rows`,i,t),...l?{caption:l}:{},...s!==void 0?{totalRows:s}:{},...f?{evidenceIds:f}:{}}}if(a==="evidence_appendix"){I(o,n,["type","title","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t);return{type:"evidence_appendix",...i?{title:i}:{},evidenceIds:A(o.evidenceIds,`${n}.evidenceIds`,t,{required:!0})??[]}}if(a==="sql"){I(o,n,["type","title","sql","evidenceIds"],t);const i=E(o.title,`${n}.title`,y.contentTitle,t),c=w(o.sql,`${n}.sql`,y.contentSql,t),m=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"sql",...i?{title:i}:{},sql:c,...m?{evidenceIds:m}:{}}}return p(t,`${n}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."),{type:"paragraph",text:""}}function ft(e){const r=[],t=k(e,"content",r);I(t,"content",["version","title","summary","blocks"],r),t.version!==1&&p(r,"content.version","Expected version 1.");const n=E(t.title,"content.title",y.contentTitle,r),o=E(t.summary,"content.summary",y.contentSummary,r);Array.isArray(t.blocks)||p(r,"content.blocks","Expected an array.");const a=Array.isArray(t.blocks)?t.blocks:[];a.length===0&&p(r,"content.blocks","Expected at least one block."),a.length>F.maxBlocks&&p(r,"content.blocks",`Must have ${F.maxBlocks} blocks or fewer.`);const i=a.slice(0,F.maxBlocks).map((c,m)=>Or(c,m,r));return Ie(r),{version:1,...n?{title:n}:{},...o?{summary:o}:{},blocks:i}}function Kr(e){try{return{valid:!0,value:ft(e),issues:[]}}catch(r){if(r instanceof Z)return{valid:!1,issues:r.issues};throw r}}function te(e,r,t,n){return typeof e=="string"&&t.includes(e)?e:(p(n,r,`Expected ${t.join(" or ")}.`),t[0])}function z(e,r,t,n,o){if(e!=null){if(typeof e=="string"&&t.has(e))return e;p(o,r,`Expected ${n}.`)}}function Nr(e,r,t){if(e!=null){if(!Array.isArray(e)){p(t,r,"Expected an array.");return}return e}}function zr(e,r,t){if(e!=null){if(!ct(e)){p(t,r,"Expected an object.");return}return e}}function Vr(e,r,t){if(e==null)return;const n=k(e,r,t);I(n,r,kr,t);const o={},a=z(n.pageSize,`${r}.pageSize`,vr,"letter, legal, a4, a3, or tabloid",t),i=z(n.orientation,`${r}.orientation`,br,"portrait or landscape",t),c=z(n.delimiter,`${r}.delimiter`,Ir,"comma, semicolon, or tab",t),m=z(n.sheetSelection,`${r}.sheetSelection`,Tr,"current or all",t);a&&(o.pageSize=a),i&&(o.orientation=i),c&&(o.delimiter=c),m&&(o.sheetSelection=m);for(const l of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues","allowDownload"])if(!(n[l]===void 0||n[l]===null)){if(typeof n[l]!="boolean"){p(t,`${r}.${l}`,"Expected a boolean.");continue}o[l]=n[l]}for(const l of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const s=E(n[l],`${r}.${l}`,y.id,t);s&&(o[l]=s)}for(const l of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const s=Nr(n[l],`${r}.${l}`,t);s&&(o[l]=s)}for(const l of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const s=zr(n[l],`${r}.${l}`,t);s&&(o[l]=s)}return Object.keys(o).length>0?o:void 0}function se(e,r,t,n){const o=E(r,t,y.attachmentTitle,n);return o&&(e.title=o),e}function me(e,r,t,n){const o=Vr(r,t,n);return o&&(e.settings=o),e}function Lr(e,r,t){const n=`attachments.${r}`,o=k(e,n,t),a=o.type;if(a==="dashboard"){I(o,n,["type","dashboardId","format","title","settings"],t);const i=se({type:"dashboard",dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),format:te(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return me(i,o.settings,`${n}.settings`,t)}if(a==="dashboard_sheet"||a==="document_sheet"){I(o,n,["type","dashboardId","sheetId","format","title","settings"],t);const i=se({type:a,dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),sheetId:w(o.sheetId,`${n}.sheetId`,y.id,t),format:te(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return me(i,o.settings,`${n}.settings`,t)}if(a==="card"){I(o,n,["type","dashboardId","cardId","format","title","settings"],t);const i=se({type:"card",dashboardId:w(o.dashboardId,`${n}.dashboardId`,y.id,t),cardId:w(o.cardId,`${n}.cardId`,y.id,t),format:te(o.format,`${n}.format`,["csv","pdf"],t)},o.title,`${n}.title`,t);return me(i,o.settings,`${n}.settings`,t)}return p(t,`${n}.type`,"Expected dashboard, dashboard_sheet, document_sheet, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function Ur(e){switch(e.type){case"dashboard":return`${e.type}:${e.dashboardId}:${e.format}`;case"dashboard_sheet":case"document_sheet":return`${e.type}:${e.dashboardId}:${e.sheetId}:${e.format}`;case"card":return`${e.type}:${e.dashboardId}:${e.cardId}:${e.format}`}}function pt(e,r){if(e==null)return[];if(!Array.isArray(e))return p(r,"attachments","Expected an array."),[];e.length>ee&&p(r,"attachments",`Choose ${ee} attachments or fewer.`);const t=e.slice(0,ee).map((o,a)=>Lr(o,a,r)),n=new Set;return t.forEach((o,a)=>{const i=Ur(o);n.has(i)&&p(r,`attachments.${a}`,"Duplicate attachment."),n.add(i)}),t}function yt(e,r){if(e==null)return;const t=k(e,"limits",r);I(t,"limits",Object.keys(de),r);const n={};return Object.keys(de).forEach(o=>{const a=t[o];if(a==null)return;const i=de[o];if(typeof a!="number"||!Number.isInteger(a)||a<i.min||a>i.max){p(r,`limits.${o}`,`Expected an integer between ${i.min} and ${i.max}.`);return}n[o]=a}),Object.keys(n).length>0?n:void 0}function Ie(e){if(e.length>0)throw new Z(e)}function ht(e,r,t){!(e.type==="generated_analysis"||e.type==="custom_message"&&!!e.message.trim())&&r.length===0&&p(t,"body","Add briefing instructions, a custom message, or at least one attachment.")}function qr(e,r,t){e==null||e.forEach((n,o)=>{const a=`${t}.${o}.scope`,i=n.scope.attachmentIndex;if(i===void 0)throw new $.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify the attachment that owns this presentation entry.`);const c=r[i];if(!c)throw new $.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify an existing attachment.`);if(n.scope.dashboardId!==c.dashboardId)throw new $.PresentationExecutionSnapshotError(`${a}.dashboardId must match the dashboard selected by the referenced attachment.`);if(c.type==="card"&&n.scope.cardId!==c.cardId)throw new $.PresentationExecutionSnapshotError(`${a}.cardId must match the card selected by the referenced attachment.`)})}function Te(e){const r=[],t=k(e,"jobConfig",r);I(t,"jobConfig",["kind","presentationExecutionSnapshot","source","body","attachments","presentation","limits"],r),t.kind!==ne&&p(r,"kind","Expected BRIEFING.");let n;try{n=$.parsePresentationExecutionSnapshot(t.presentationExecutionSnapshot)}catch(l){if(l instanceof $.PresentationExecutionSnapshotError)throw l;p(r,"jobConfig.presentationExecutionSnapshot",l instanceof Error?l.message:"Invalid presentation snapshot.")}const o=dt(t.source,r),a=st(t.body,r),i=pt(t.attachments,r),c=mt(t.presentation,r),m=yt(t.limits,r);return ht(a,i,r),qr(n==null?void 0:n.resolvedFormats,i,"jobConfig.presentationExecutionSnapshot.resolvedFormats"),Ie(r),{kind:ne,presentationExecutionSnapshot:n,source:o,body:a,attachments:i,presentation:c,...m?{limits:m}:{}}}function jr(e){return Te({...e,kind:ne})}function Ce(e,r,t,n="deliveryConfig.recipients"){const o=`${n}.${r}`,a=k(e,o,t),i=a.type;if(i==="email"){I(a,o,["type","address","name"],t);const c=w(a.address,`${o}.address`,y.id,t),m=E(a.name,`${o}.name`,y.attachmentTitle,t);return c&&!Rr(c)&&p(t,`${o}.address`,"Email address is invalid."),{type:"email",address:c,...m?{name:m}:{}}}return i==="user"?(I(a,o,["type","userId"],t),{type:"user",userId:w(a.userId,`${o}.userId`,y.id,t)}):i==="tenant_user"?(I(a,o,["type","tenantUserId"],t),{type:"tenant_user",tenantUserId:w(a.tenantUserId,`${o}.tenantUserId`,y.id,t)}):i==="group"?(I(a,o,["type","groupId"],t),{type:"group",groupId:w(a.groupId,`${o}.groupId`,y.id,t)}):(p(t,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function Gr(e,r){return e==null?[]:Array.isArray(e)?e.map((t,n)=>Ce(t,n,r)):(p(r,"deliveryConfig.recipients","Expected an array."),[])}function Hr(e,r){if(!Array.isArray(e))return p(r,"deliveryConfig.channels","Expected an array."),[];const t=[];return e.forEach((n,o)=>{if(!we(n)){p(r,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}t.includes(n)||t.push(n)}),t}function Wr(e,r,t){if(e==null)return;const n=k(e,r,t),o={};return Object.entries(n).forEach(([a,i])=>{if(typeof i!="string"){p(t,`${r}.${a}`,"Expected a string.");return}o[a]=i.trim()}),Object.keys(o).length>0?o:void 0}function Yr(e,r,t){if(e==null)return;const n=k(e,r,t);I(n,r,["url","method","headers","secretEncrypted"],t);const o=n.method===void 0||n.method===null?void 0:te(n.method,`${r}.method`,["POST","PUT"],t),a=Wr(n.headers,`${r}.headers`,t),i=E(n.secretEncrypted,`${r}.secretEncrypted`,2e3,t);return{url:w(n.url,`${r}.url`,2e3,t),...o?{method:o}:{},...a?{headers:a}:{},...i?{secretEncrypted:i}:{}}}function Qr(e,r,t){const n=k(e,r,t),o=n.type;if(o==="channel"){I(n,r,["type","channelId","channelName","isPrivate"],t);const a=E(n.channelName,`${r}.channelName`,y.attachmentTitle,t),i=n.isPrivate===void 0||n.isPrivate===null?void 0:U(n.isPrivate,!1,`${r}.isPrivate`,t);return{type:"channel",channelId:w(n.channelId,`${r}.channelId`,y.id,t),...a?{channelName:a}:{},...i!==void 0?{isPrivate:i}:{}}}return o==="dm"?(I(n,r,["type","recipient"],t),p(t,`${r}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:Ce(n.recipient,0,t,`${r}.recipient`)}):(p(t,`${r}.type`,"Expected channel."),{type:"channel",channelId:""})}function Jr(e,r,t){if(e==null)return;if(!Array.isArray(e)){p(t,r,"Expected an array.");return}const n=e.map((o,a)=>Ce(o,a,t,r));return n.length>0?n:void 0}function Zr(e,r,t){if(e==null)return;const n=k(e,r,t);I(n,r,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],t);const o=Jr(n.threadMentions,`${r}.threadMentions`,t),a=U(n.postThreadDetail,!0,`${r}.postThreadDetail`,t),i=U(n.includeDashboardLink,!0,`${r}.includeDashboardLink`,t),c=U(n.includeBriefingLink,!0,`${r}.includeBriefingLink`,t);return{destination:Qr(n.destination,`${r}.destination`,t),...o?{threadMentions:o}:{},...n.postThreadDetail!==void 0?{postThreadDetail:a}:{},...n.includeDashboardLink!==void 0?{includeDashboardLink:i}:{},...n.includeBriefingLink!==void 0?{includeBriefingLink:c}:{}}}function Xr(e,r,t){const n=k(e,r,t);I(n,r,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],t);const o=z(n.formatProfile,`${r}.formatProfile`,Cr,"concise, balanced, or detailed",t),a=E(n.subjectOverride,`${r}.subjectOverride`,500,t),i=E(n.titleOverride,`${r}.titleOverride`,500,t),c=E(n.summaryOverride,`${r}.summaryOverride`,2e3,t),m=U(n.actionBlockVisible,!0,`${r}.actionBlockVisible`,t),l=Yr(n.webhookConfig,`${r}.webhookConfig`,t),s=Zr(n.slackConfig,`${r}.slackConfig`,t);return{...o?{formatProfile:o}:{},...a?{subjectOverride:a}:{},...i?{titleOverride:i}:{},...c?{summaryOverride:c}:{},...n.actionBlockVisible!==void 0?{actionBlockVisible:m}:{},...s?{slackConfig:s}:{},...l?{webhookConfig:l}:{}}}function en(e,r){if(e==null)return;const t=k(e,"deliveryConfig.channelConfigs",r),n={};return Object.entries(t).forEach(([o,a])=>{if(!we(o)){p(r,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}n[o]=Xr(a,`deliveryConfig.channelConfigs.${o}`,r)}),Object.keys(n).length>0?n:void 0}function tn(e,r){var m,l,s;if(e==null)return null;const t=k(e,"deliveryConfig",r);I(t,"deliveryConfig",["recipients","channels","channelConfigs"],r);const n=en(t.channelConfigs,r),o=Gr(t.recipients,r),a=Hr(t.channels,r),i=((l=(m=n==null?void 0:n.SLACK)==null?void 0:m.slackConfig)==null?void 0:l.destination.type)==="channel"&&!!n.SLACK.slackConfig.destination.channelId.trim();return a.some(f=>f!=="SLACK")&&o.length===0&&p(r,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),a.length===0&&p(r,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),a.includes("SLACK")&&!i&&p(r,"deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId","Choose a Slack channel destination."),!a.includes("SLACK")&&((s=n==null?void 0:n.SLACK)!=null&&s.slackConfig)&&p(r,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:a,...n?{channelConfigs:n}:{}}}function le(e){const r=[],t=k(e,"draft",r);I(t,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],r);const n=w(t.name,"name",y.name,r),o=E(t.description,"description",y.description,r)??null,a=E(t.scheduleExpr,"scheduleExpr",500,r)??null,i=E(t.timezone,"timezone",200,r)??"UTC",c=xr(t.status,r),m=dt(t.source,r),l=st(t.body,r),s=pt(t.attachments,r),f=mt(t.presentation,r),u=yt(t.limits,r),d=tn(t.deliveryConfig,r);return ht(l,s,r),Ie(r),{name:n,description:o,status:c,scheduleExpr:a,timezone:i,source:m,body:l,attachments:s,presentation:f,...u?{limits:u}:{},deliveryConfig:d}}function rn(e){return le(e)}function nn(e){return le(e)}function on(e){try{return{valid:!0,value:le(e),issues:[]}}catch(r){if(r instanceof Z)return{valid:!1,issues:r.issues};throw r}}function an(e){try{return{valid:!0,value:Te(e),issues:[]}}catch(r){if(r instanceof Z)return{valid:!1,issues:r.issues};throw r}}function ln(e){return typeof e=="string"&<.has(e)}function we(e){return typeof e=="string"&&gr.has(e)}exports.AmbiguousGroupedTemporalGrainError=Fe;exports.BRIEFING_ARTIFACT_FORMATS=ot;exports.BRIEFING_CONTENT_LIMITS=F;exports.BRIEFING_KIND=ne;exports.BRIEFING_TEXT_LIMITS=y;exports.BriefingContractError=Z;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=oe;exports.DEFAULT_BRIEFING_SCHEDULE=nr;exports.DashboardTemporalBoundaryError=K;exports.MAX_BRIEFING_ATTACHMENTS=ee;exports.PYTHON_DEFAULT_CODE=Re;exports.buildBriefingJobConfig=jr;exports.buildBriefingScheduleExpr=ir;exports.buildCreateBriefingRequest=rn;exports.buildDashboardCardTableConfig=It;exports.buildDashboardTemporalSnapshotEntries=Qt;exports.buildSlotOrderedCards=He;exports.buildUpdateBriefingRequest=nn;exports.canCreateBriefingForUser=fr;exports.createCardsFromSlots=jt;exports.describeBriefingSchedule=dr;exports.findCustomVisualConfigCard=Ye;exports.formatBriefingComparisonValues=hr;exports.formatBriefingDisplayValue=it;exports.formatGroupedTemporalFieldValue=Rt;exports.formatGroupedTemporalRecords=kt;exports.formatGroupedTemporalValue=he;exports.getActiveCardFromVisualResource=Kt;exports.getActiveFrameCard=ge;exports.getBriefingCardAttachmentCapability=ur;exports.getBriefingCardAttachmentFormats=et;exports.getBriefingCreationIntents=pr;exports.getBriefingDisplayTypeLabel=nt;exports.getBriefingPresentation=yr;exports.getConfigSlotExpectedType=Ut;exports.getCustomVisualInputCards=We;exports.getDefaultBriefingCardAttachmentFormat=tt;exports.getEffectiveCardTypeForSlot=qt;exports.getSlotDefinitionForIndex=ve;exports.getSlotExpectedChartType=ie;exports.getSlotIndexForCard=Ge;exports.isBriefingArtifactFormat=ln;exports.isBriefingDeliveryChannel=we;exports.isBriefingNumericValue=at;exports.isCardRawTemporalPresentationActivated=Pt;exports.isCardRawTemporalResultCompatible=Ot;exports.isCustomVisualConfigCard=fe;exports.isDeclaredSqlRawTemporalPresentationCard=Ve;exports.isEmailOnlyBriefingDelivery=rt;exports.isGroupedTemporalResultCompatible=St;exports.isPivotResultContractCompatibleWithCardConfig=De;exports.isValidBriefingTimezone=or;exports.normalizeBriefingContentDocument=ft;exports.normalizeBriefingDraft=le;exports.normalizeBriefingJobConfig=Te;exports.normalizeDashboardCardPythonCode=j;exports.normalizeGroupedTemporalField=Ae;exports.normalizeMultiInputPayload=Ht;exports.parseBriefingScheduleExpr=Xe;exports.parseCanonicalPivotResultTransportOnce=Pe;exports.parseFrameObject=qe;exports.presentRawTemporalCell=Mt;exports.previewDeclaredSqlRawTemporalFormat=At;exports.reindexSlotCards=Lt;exports.resolveCardRawTemporalPresentation=Ue;exports.resolveCartesianTemporalActivation=wt;exports.resolveDashboardCardResultOwner=J;exports.resolveDashboardTemporalActivation=Be;exports.resolveDeclaredSqlRawTemporalFormat=ae;exports.resolveDetailTableRawTemporalPresentation=Le;exports.resolveGroupedTemporalFieldPresentationByRole=Oe;exports.resolveGroupedTemporalFieldSnapshotFormat=Ke;exports.resolveGroupedTemporalPresentation=xt;exports.resolveMultiInputType=Qe;exports.resolveMultiInputTypeFromVisual=Gt;exports.resolveRegularTableTemporalActivation=Ct;exports.validateBriefingContentDocument=Kr;exports.validateBriefingDraft=on;exports.validateBriefingJobConfig=an;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var k=Object.defineProperty;var G=(e,t,n)=>t in e?k(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var A=(e,t,n)=>G(e,typeof t!="symbol"?t+"":t,n);const c=require("./format-types-PSZZ7hG8.cjs"),M=require("./pivot-result-lifecycle-
|
|
1
|
+
"use strict";var k=Object.defineProperty;var G=(e,t,n)=>t in e?k(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var A=(e,t,n)=>G(e,typeof t!="symbol"?t+"":t,n);const c=require("./format-types-PSZZ7hG8.cjs"),M=require("./pivot-result-lifecycle-DTLRuDEW.cjs"),B=require("./index-F25jnH0p.cjs"),j=require("./temporal-bucket-DHY1y9lq.cjs");function y(e,t){const n=c.toDate(e),o=c.toDate(t),r=n.getTime()-o.getTime();return r<0?-1:r>0?1:r}function X(e){return c.constructFrom(e,Date.now())}function H(e,t){const n=c.toDate(e),o=c.toDate(t),r=n.getFullYear()-o.getFullYear(),a=n.getMonth()-o.getMonth();return r*12+a}function Y(e){return t=>{const o=(e?Math[e]:Math.trunc)(t);return o===0?0:o}}function q(e,t){return+c.toDate(e)-+c.toDate(t)}function W(e){const t=c.toDate(e);return t.setHours(23,59,59,999),t}function K(e){const t=c.toDate(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}function J(e){const t=c.toDate(e);return+W(t)==+K(t)}function Q(e,t){const n=c.toDate(e),o=c.toDate(t),r=y(n,o),a=Math.abs(H(n,o));let i;if(a<1)i=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-r*a);let s=y(n,o)===-r;J(c.toDate(e))&&a===1&&y(e,o)===1&&(s=!1),i=r*(a-Number(s))}return i===0?0:i}function z(e,t,n){const o=q(e,t)/1e3;return Y(n==null?void 0:n.roundingMethod)(o)}function ee(e,t,n){const o=c.getDefaultOptions(),r=(n==null?void 0:n.locale)??o.locale??c.enUS,a=2520,i=y(e,t);if(isNaN(i))throw new RangeError("Invalid time value");const s=Object.assign({},n,{addSuffix:n==null?void 0:n.addSuffix,comparison:i});let l,u;i>0?(l=c.toDate(t),u=c.toDate(e)):(l=c.toDate(e),u=c.toDate(t));const g=z(u,l),m=(c.getTimezoneOffsetInMilliseconds(u)-c.getTimezoneOffsetInMilliseconds(l))/1e3,f=Math.round((g-m)/60);let h;if(f<2)return n!=null&&n.includeSeconds?g<5?r.formatDistance("lessThanXSeconds",5,s):g<10?r.formatDistance("lessThanXSeconds",10,s):g<20?r.formatDistance("lessThanXSeconds",20,s):g<40?r.formatDistance("halfAMinute",0,s):g<60?r.formatDistance("lessThanXMinutes",1,s):r.formatDistance("xMinutes",1,s):f===0?r.formatDistance("lessThanXMinutes",1,s):r.formatDistance("xMinutes",f,s);if(f<45)return r.formatDistance("xMinutes",f,s);if(f<90)return r.formatDistance("aboutXHours",1,s);if(f<c.minutesInDay){const d=Math.round(f/60);return r.formatDistance("aboutXHours",d,s)}else{if(f<a)return r.formatDistance("xDays",1,s);if(f<c.minutesInMonth){const d=Math.round(f/c.minutesInDay);return r.formatDistance("xDays",d,s)}else if(f<c.minutesInMonth*2)return h=Math.round(f/c.minutesInMonth),r.formatDistance("aboutXMonths",h,s)}if(h=Q(u,l),h<12){const d=Math.round(f/c.minutesInMonth);return r.formatDistance("xMonths",d,s)}else{const d=h%12,w=Math.trunc(h/12);return d<3?r.formatDistance("aboutXYears",w,s):d<9?r.formatDistance("overXYears",w,s):r.formatDistance("almostXYears",w+1,s)}}function C(e,t){return ee(e,X(e),t)}const I=["day","hour","minute","second","millisecond"],L={day:864e5,hour:36e5,minute:6e4,second:1e3,millisecond:1},te={day:"d",hour:"hr",minute:"min",second:"s",millisecond:"ms"},ne={day:["day","days"],hour:["hour","hours"],minute:["minute","minutes"],second:["second","seconds"],millisecond:["millisecond","milliseconds"]};function re(e){return e==="day"||e==="hour"||e==="minute"||e==="second"||e==="millisecond"}function V(e,t){return re(e)?e:t}function S(e,t){return I.indexOf(V(e,t))}function oe(e,t){const n=S(e,"day"),o=S(t,"second"),r=Math.min(n,o),a=Math.max(n,o);return I.slice(r,a+1)}function ae(e,t){return e*L[V(t,"second")]}function se(e,t){const n=oe(t.largestUnit,t.smallestUnit),o=n[n.length-1],r=L[o];let a=Math.round(e/r)*r;return n.map(i=>{const s=L[i],l=Math.floor(a/s);return a-=l*s,{unit:i,value:l}})}function ie(e,t){const n=e.filter(a=>a.value!==0),o=n.length>0?n:[e[e.length-1]],r=typeof t=="number"&&Number.isFinite(t)?Math.max(1,Math.trunc(t)):o.length;return o.slice(0,r).map(a=>`${a.value}${te[a.unit]}`).join(" ")}function le(e,t){const n=e.filter(a=>a.value!==0),o=n.length>0?n:[e[e.length-1]],r=typeof t=="number"&&Number.isFinite(t)?Math.max(1,Math.trunc(t)):o.length;return o.slice(0,r).map(a=>{const[i,s]=ne[a.unit];return`${a.value} ${a.value===1?i:s}`}).join(" ")}function ce(e){const t=e.some(l=>l.unit==="day"&&l.value!==0),n=e.some(l=>l.unit==="millisecond"),o=e.findIndex(l=>l.value!==0),r=Math.max(0,e.length-2),a=t?0:o===-1?r:Math.min(o,r),i=o===-1?e.slice(r):e.slice(a);if(i.length===0)return"0";const s=i.map((l,u)=>l.unit==="millisecond"?String(l.value).padStart(3,"0"):u===0?String(l.value):String(l.value).padStart(2,"0")).join(":");return n?s.replace(/:(\d{3})$/,".$1"):s}function ue(e,t,n){const o=`${n.prefix||""}${e}${n.suffix||""}`;return t?n.negativeInParentheses?`(${o})`:`-${o}`:o}function E(e,t={}){if(e==null)return"";const n=typeof e=="number"?e:typeof e=="string"&&e.trim()?Number(e):NaN;if(!Number.isFinite(n))return"";const o=t.inputUnit||"second",r=t.outputStyle==="digital"||t.outputStyle==="long"?t.outputStyle:"compact",a=n<0,i=Math.abs(ae(n,o)),s=se(i,t),l=r==="digital"?ce(s):r==="long"?le(s,t.maxUnits):ie(s,t.maxUnits);return ue(l,a,t)}function fe(e,t,n){const o={...t,locale:t.locale??n};if(o.type==="number")return M.formatNumericCanonical(e,o);const{prefix:r,suffix:a,...i}=o;return`${r??""}${M.formatNumericCanonical(e,{...i,negativeStyle:o.type==="currency"?o.negativeStyle:"minus"})}${a??""}`}function p(e,t,n){return e===null?{value:e,text:null}:!t||!c.isNumericCanonicalFormat(t)&&t.type!=="duration"?{value:e,text:M.formatNumericCanonical(e,{type:"number",locale:n})}:t.type==="duration"?{value:e,text:E(e,{inputUnit:t.inputUnit,outputStyle:t.outputStyle,largestUnit:t.largestUnit,smallestUnit:t.smallestUnit,maxUnits:t.maxUnits,prefix:t.prefix,suffix:t.suffix,negativeInParentheses:t.negativeStyle==="parentheses"})}:{value:e,text:fe(e,t,n)}}function v(e,t,n,o){return e===null?{value:e,text:null}:o==="percent"?{value:e,text:M.formatNumericCanonical(e,{type:"percent",locale:n,minimumFractionDigits:t,maximumFractionDigits:t,percentValueMode:"fraction"})}:{value:e,text:M.formatNumericCanonical(e,{type:"number",locale:n,minimumFractionDigits:t,maximumFractionDigits:t,suffix:"×"})}}function N(e,t){if(e===void 0)return t;if(!Number.isInteger(e)||e<0||e>6)throw new RangeError("Comparison precision must be an integer from 0 to 6.");return e}function me(e,t){const n={mode:t.displayMode,current:p(e.currentValue,t.metricFormat,t.locale),comparison:p(e.comparisonValue,t.metricFormat,t.locale)};return(t.displayMode==="difference"||t.displayMode==="both")&&(n.difference=p(e.delta,t.metricFormat,t.locale)),(t.displayMode==="percent_change"||t.displayMode==="both")&&(n.percentChange=v(e.percentChange,N(t.precision,1),t.locale,"percent")),t.displayMode==="ratio"&&(n.ratio=v(e.ratio,N(t.precision,2),t.locale,"ratio")),n}function ge(e,t){return e&&e!=="auto"?e:t}function de(e,t=new Date){try{const n={timeZone:e,timeZoneName:"short"},r=new Intl.DateTimeFormat("en-US",n).formatToParts(t).find(a=>a.type==="timeZoneName");return(r==null?void 0:r.value)||e}catch{return e}}function he(e){try{const t={timeZone:e,timeZoneName:"long"},o=new Intl.DateTimeFormat("en-US",t).formatToParts(new Date).find(r=>r.type==="timeZoneName");return(o==null?void 0:o.value)||e}catch{return e}}function T(e,t="auto"){if(!e)return new Date(NaN);const n=e.endsWith("Z"),o=/[+-]\d{2}:?\d{2}$/.test(e),r=/\([A-Z]{3,4}\)$/.test(e);if(t==="auto")return n||o||r?new Date(e):new Date(e+"Z");if(t==="local"){if(n||o){const a=e.replace(/Z$/,"").replace(/[+-]\d{2}:?\d{2}$/,"");return new Date(a)}return new Date(e)}else return t==="UTC"?n?new Date(e):o?new Date(e):new Date(e+"Z"):n||o||r?new Date(e):B.fromZonedTime(e,t)}const Me="MM/dd/yyyy",ye=(e,t,n,o="auto")=>{if(!e)return"";try{const r=T(e,o);if(isNaN(r.getTime()))return e;const i=(t&&t.trim()?t:Me).replace(/LLLL/g,"MMMM").replace(/LLL/g,"MMM");return n&&n!=="auto"?c.formatInTimeZone(r,n,i):c.format(r,i)}catch(r){return console.error("Date formatting error:",r),e}},De=(e,t="auto")=>{if(!e)return"";try{const n=T(e,t);return isNaN(n.getTime())?e:C(n,{addSuffix:!0})}catch(n){return console.error("Relative time formatting error:",n),e}};function R(e,t=","){if(e==null)return"";const n=String(e);return n.includes(t)||n.includes('"')||n.includes(`
|
|
2
2
|
`)||n.includes("\r")?`"${n.replace(/"/g,'""')}"`:n}function $(e,t=","){return e.map(n=>R(n,t)).join(t)}function _(e,t={}){const{delimiter:n=",",lineEnding:o=`
|
|
3
3
|
`}=t;return e.map(r=>$(r,n)).join(o)}function be(e,t={}){if(e.length===0)return"";const{delimiter:n=",",lineEnding:o=`
|
|
4
4
|
`,includeHeaders:r=!0,columns:a}=t,i=a||Object.keys(e[0]),s=[];r&&s.push(i);for(const l of e){const u=i.map(g=>{const m=l[g];return m==null?"":String(m)});s.push(u)}return _(s,{delimiter:n,lineEnding:o})}const F="__TOTAL__";function D(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function b(e){return e===F}function we(e){const t=new Map,n=(e.groupByColumns??[]).map((r,a)=>{var u,g,m;if(!D(r))throw new Error(`Aggregate groupByColumns[${a}] is invalid`);const i=typeof r.id=="string"&&r.id.length>0?r.id:void 0,s=i?(m=(g=(u=e.columnKeyMap)==null?void 0:u.byRole)==null?void 0:g.groupby)==null?void 0:m[i]:void 0,l=(s==null?void 0:s.outputKey)||(s==null?void 0:s.rawKey)||(typeof r.alias=="string"&&r.alias.length>0?r.alias:typeof r.name=="string"&&r.name.length>0?r.name:void 0);if(!l)throw new Error(`Aggregate groupByColumns[${a}] has no output key`);return[i,r.alias,r.name,l].forEach(f=>{typeof f=="string"&&f.length>0&&t.set(f,l)}),l}),o=(e.rowAggregates??[]).flatMap(r=>!D(r)||typeof r.function!="string"||typeof r.groupLevel!="string"?[]:[{function:r.function,groupLevel:r.groupLevel==="ALL"?"ALL":t.get(r.groupLevel)||r.groupLevel,...typeof r.label=="string"?{label:r.label}:{}}]);return{groupColumnKeys:n,rowAggregates:o}}function P(e){return e==="SUM"?"Total":e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function U(e){var n;if(e.customLabel)return e.customLabel;const t=P(e.aggregateFunction);if(e.levelValue!==void 0&&!b(e.levelValue)){if(e.levelValue===null){const r=(n=e.formatValue)==null?void 0:n.call(e,null);return r?`Subtotal ${r}`:`Subtotal ${t}`}const o=e.formatValue?e.formatValue(e.levelValue):String(e.levelValue);if(o)return`Subtotal (${o})`}return`Subtotal ${t}`}function O(e,t){return t||`Grand ${P(e)}`}function x(e){var o,r;const t=e.context.groupColumnKeys,n=typeof e.row.aggregate=="string"?e.row.aggregate:"SUM";if(e.row.isGrandTotal===!0){const a=(o=e.context.rowAggregates.find(i=>i.groupLevel==="ALL"))==null?void 0:o.label;return{kind:"grand-total",cells:t.map((i,s)=>({columnKey:i,text:s===0?O(n,a):"",placement:s===0?"label":"empty",colSpan:s===0?t.length:1}))}}if(e.row.isSubtotal===!0){if(typeof e.row.subtotalLevel!="string")throw new Error("Aggregate subtotal row is missing subtotalLevel");const a=t.indexOf(e.row.subtotalLevel);if(a<0)throw new Error(`Aggregate subtotal level "${e.row.subtotalLevel}" has no group column`);const i=D(e.row.subtotalContext)?e.row.subtotalContext:void 0,s=D(i==null?void 0:i.groupByValues)?i.groupByValues:{},l=(r=e.context.rowAggregates.find(u=>u.groupLevel===e.row.subtotalLevel&&u.function===n))==null?void 0:r.label;return{kind:"subtotal",cells:t.map((u,g)=>{if(g>a)return{columnKey:u,text:"",placement:"empty",colSpan:1};if(g<a){const m=e.row[u];return{columnKey:u,text:m===void 0||b(m)?"":e.formatValue(m,u),placement:"value",colSpan:1}}return{columnKey:u,text:U({aggregateFunction:n,customLabel:l,levelValue:s[u],formatValue:m=>e.formatLabelValue?e.formatLabelValue(m,u):String(e.formatValue(m,u)??"")}),placement:"label",colSpan:t.length-a}})}}return{kind:"data",cells:t.map(a=>{const i=e.row[a];return{columnKey:a,text:i===void 0||b(i)?"":e.formatValue(i,a),placement:"value",colSpan:1}})}}function pe(e){const t=x(e).cells.find(n=>n.columnKey===e.columnKey);if(!t)throw new Error(`Aggregate group column "${e.columnKey}" is unknown`);return t.text}function Le(e){return x(e).cells.map(t=>t.text)}class Z extends Error{constructor(n,o){super(`${n}: ${o}`);A(this,"deliveryBlocking",!0);this.code=n,this.name="PivotHeaderPresentationError"}}function Te(e){var r;const t=e.mode??"formatted",n=e.members.map(a=>{var s;if(t==="canonical"||!a.temporalBucket)return a.value===null?"":String(a.value);const i=(s=e.resolveTemporalFormat)==null?void 0:s.call(e,a.fieldId);if(!i)throw new Z("missing_resolved_temporal_format",`Missing resolved temporal presentation for pivot field "${a.fieldId}"`);return j.formatTemporalBucket({value:a.value,metadata:a.temporalBucket,format:i})}),o=((r=e.metricLabel)==null?void 0:r.trim())||void 0;return{memberLabels:n,...o?{metricLabel:o}:{},flattenedLabel:[...n,...o?[o]:[]].join(" / ")}}exports.AGGREGATE_TOTAL_MEMBER_MARKER=F;exports.PivotHeaderPresentationError=Z;exports.arrayToCSV=_;exports.arrayToCSVRow=$;exports.escapeCSVValue=R;exports.formatAggregateGrandTotalLabel=O;exports.formatAggregateGroupCell=pe;exports.formatAggregateGroupRow=Le;exports.formatAggregateSubtotalLabel=U;exports.formatDate=ye;exports.formatDistanceToNow=C;exports.formatDuration=E;exports.formatMetricComparison=me;exports.formatRelativeTime=De;exports.getTimezoneAbbreviation=de;exports.getTimezoneName=he;exports.isAggregateTotalMemberMarker=b;exports.objectsToCSV=be;exports.parseWithSourceTimezone=T;exports.presentAggregateGroupRow=x;exports.presentPivotHeader=Te;exports.resolveAggregateTablePresentationContext=we;exports.resolveTimezone=ge;
|
package/dist/chunks/{pivot-header-presentation-ckYOQ4aZ.js → pivot-header-presentation-D-0jvUwn.js}
RENAMED
|
@@ -2,7 +2,7 @@ var U = Object.defineProperty;
|
|
|
2
2
|
var E = (e, t, n) => t in e ? U(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
|
|
3
3
|
var A = (e, t, n) => E(e, typeof t != "symbol" ? t + "" : t, n);
|
|
4
4
|
import { t as f, c as P, g as R, e as O, a as T, m as S, b as M, i as Z, f as k, d as B } from "./format-types-CFHQoIuk.js";
|
|
5
|
-
import { b as y } from "./pivot-result-lifecycle-
|
|
5
|
+
import { b as y } from "./pivot-result-lifecycle-CHWEGU2o.js";
|
|
6
6
|
import { f as j } from "./index-CACdoqu3.js";
|
|
7
7
|
import { f as X } from "./temporal-bucket-5UYEotyQ.js";
|
|
8
8
|
function b(e, t) {
|
package/dist/chunks/{pivot-result-lifecycle-sjzIOpvp.js → pivot-result-lifecycle-CHWEGU2o.js}
RENAMED
|
@@ -151,7 +151,7 @@ function de(e, t) {
|
|
|
151
151
|
const s = `${t.prefix ?? ""}${o}${t.suffix ?? ""}`;
|
|
152
152
|
return a ? `(${s})` : s;
|
|
153
153
|
}
|
|
154
|
-
function
|
|
154
|
+
function st(e, t, r = "en-US") {
|
|
155
155
|
if (e == null || isNaN(e))
|
|
156
156
|
return "";
|
|
157
157
|
const a = x((t == null ? void 0 : t.locale) || r), n = (t == null ? void 0 : t.style) || "decimal", i = n === "decimal" ? "number" : n;
|
|
@@ -173,7 +173,7 @@ function ot(e, t, r = "en-US") {
|
|
|
173
173
|
suffix: t == null ? void 0 : t.suffix
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
|
-
function
|
|
176
|
+
function ct(e, t, r) {
|
|
177
177
|
const a = {
|
|
178
178
|
style: t === "currency" ? "currency" : t === "percent" ? "percent" : "decimal",
|
|
179
179
|
locale: r == null ? void 0 : r.locale,
|
|
@@ -293,7 +293,7 @@ function he(e) {
|
|
|
293
293
|
message: "Resolved currency formats require an explicit currency."
|
|
294
294
|
}), r.length > 0 ? { ok: !1, issues: r } : t;
|
|
295
295
|
}
|
|
296
|
-
function
|
|
296
|
+
function mt(e) {
|
|
297
297
|
var a;
|
|
298
298
|
const t = /* @__PURE__ */ new Set();
|
|
299
299
|
if (e.snapshot.resolvedFormats.forEach((n, i) => {
|
|
@@ -354,7 +354,7 @@ function ve(e) {
|
|
|
354
354
|
maximumFractionDigits: t
|
|
355
355
|
};
|
|
356
356
|
}
|
|
357
|
-
function
|
|
357
|
+
function lt(e, t, r) {
|
|
358
358
|
const a = E(e.locale) ?? t.locale, n = e.type === "number" || e.type === "currency" ? $(r) : void 0;
|
|
359
359
|
if (!(e.type === "currency" || n !== void 0))
|
|
360
360
|
return {
|
|
@@ -557,7 +557,7 @@ function R(e) {
|
|
|
557
557
|
}
|
|
558
558
|
}) : d("Raw temporal presentation must be an object.") : d("Raw temporal locale is invalid or unsupported.");
|
|
559
559
|
}
|
|
560
|
-
function
|
|
560
|
+
function ut(e) {
|
|
561
561
|
var s, m, l;
|
|
562
562
|
if (e.format) {
|
|
563
563
|
if (!h(e.format))
|
|
@@ -608,7 +608,7 @@ function _e(e) {
|
|
|
608
608
|
if (X.test(e)) return "instant";
|
|
609
609
|
if (Y.test(e)) return "wall_datetime";
|
|
610
610
|
}
|
|
611
|
-
function
|
|
611
|
+
function dt(e) {
|
|
612
612
|
const t = /* @__PURE__ */ new Set();
|
|
613
613
|
let r = !1;
|
|
614
614
|
for (const a of e.values) {
|
|
@@ -632,7 +632,7 @@ function ut(e) {
|
|
|
632
632
|
}
|
|
633
633
|
};
|
|
634
634
|
}
|
|
635
|
-
function
|
|
635
|
+
function ft(e) {
|
|
636
636
|
return {
|
|
637
637
|
version: 1,
|
|
638
638
|
columns: Object.fromEntries(
|
|
@@ -666,7 +666,7 @@ function Te(e) {
|
|
|
666
666
|
}
|
|
667
667
|
return { version: 1, columns: t };
|
|
668
668
|
}
|
|
669
|
-
function
|
|
669
|
+
function yt(e) {
|
|
670
670
|
if (e.length === 0) return;
|
|
671
671
|
const t = e.map(Te), r = Object.keys(t[0].columns).sort();
|
|
672
672
|
for (let a = 1; a < t.length; a += 1) {
|
|
@@ -950,7 +950,7 @@ function Ke(e) {
|
|
|
950
950
|
return i.status === "invalid_shape" ? P(n, t, "invalid_raw_temporal_value") : i.status === "out_of_range" ? P(n, t, "out_of_range_raw_temporal_value") : { ok: !0, text: a(i), status: "formatted" };
|
|
951
951
|
};
|
|
952
952
|
}
|
|
953
|
-
function
|
|
953
|
+
function ht(e) {
|
|
954
954
|
return Ke({
|
|
955
955
|
metadata: e.metadata,
|
|
956
956
|
format: e.format
|
|
@@ -966,7 +966,7 @@ class j extends Error {
|
|
|
966
966
|
this.name = "PresentationExecutionSnapshotError";
|
|
967
967
|
}
|
|
968
968
|
}
|
|
969
|
-
class
|
|
969
|
+
class gt extends Error {
|
|
970
970
|
constructor(r) {
|
|
971
971
|
super(
|
|
972
972
|
`missing_resolved_raw_temporal_format: Column "${r}" has no captured presentation. Resave this report before running it again.`
|
|
@@ -1187,32 +1187,32 @@ function qe(e) {
|
|
|
1187
1187
|
);
|
|
1188
1188
|
}
|
|
1189
1189
|
}
|
|
1190
|
-
function
|
|
1190
|
+
function vt(e) {
|
|
1191
1191
|
return qe({
|
|
1192
1192
|
version: 1,
|
|
1193
1193
|
reportContext: e.reportContext,
|
|
1194
1194
|
resolvedFormats: [...e.resolvedFormats]
|
|
1195
1195
|
});
|
|
1196
1196
|
}
|
|
1197
|
-
function
|
|
1197
|
+
function wt(e) {
|
|
1198
1198
|
const t = e.snapshot.resolvedFormats.find(
|
|
1199
1199
|
(r) => r.format.type !== "temporal_bucket" && r.format.type !== "raw_temporal" && M(r.scope, e.scope) && K(r.target, e.target)
|
|
1200
1200
|
);
|
|
1201
1201
|
return t == null ? void 0 : t.format;
|
|
1202
1202
|
}
|
|
1203
|
-
function
|
|
1203
|
+
function pt(e) {
|
|
1204
1204
|
const t = e.snapshot.resolvedFormats.find(
|
|
1205
1205
|
(r) => r.format.type === "raw_temporal" && M(r.scope, e.scope) && K(r.target, e.target)
|
|
1206
1206
|
);
|
|
1207
1207
|
return t == null ? void 0 : t.format;
|
|
1208
1208
|
}
|
|
1209
|
-
function
|
|
1209
|
+
function xt(e) {
|
|
1210
1210
|
const t = e.snapshot.resolvedFormats.find(
|
|
1211
1211
|
(r) => r.format.type === "temporal_bucket" && M(r.scope, e.scope) && K(r.target, e.target)
|
|
1212
1212
|
);
|
|
1213
1213
|
return t == null ? void 0 : t.format;
|
|
1214
1214
|
}
|
|
1215
|
-
function
|
|
1215
|
+
function St(e) {
|
|
1216
1216
|
var n;
|
|
1217
1217
|
const t = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
1218
1218
|
if (e.snapshot.resolvedFormats.forEach((i, o) => {
|
|
@@ -1262,23 +1262,24 @@ function T(e) {
|
|
|
1262
1262
|
)
|
|
1263
1263
|
);
|
|
1264
1264
|
}
|
|
1265
|
-
function
|
|
1266
|
-
const t =
|
|
1267
|
-
return
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1265
|
+
function Ve(e) {
|
|
1266
|
+
const t = /* @__PURE__ */ new Map();
|
|
1267
|
+
return e.forEach((r) => {
|
|
1268
|
+
r.id && t.set(r.id, (t.get(r.id) ?? 0) + 1);
|
|
1269
|
+
}), e.flatMap(
|
|
1270
|
+
(r) => r.id && (t.get(r.id) ?? 0) > 1 ? [ie(r)] : []
|
|
1271
|
+
);
|
|
1272
|
+
}
|
|
1273
|
+
function bt(e) {
|
|
1274
|
+
const t = e.metricFields ?? [], r = T(t);
|
|
1275
|
+
return {
|
|
1273
1276
|
expectedRoleFieldIds: {
|
|
1274
1277
|
groupby: T(e.groupByFields),
|
|
1275
1278
|
metric: r.length > 0 ? r : [re],
|
|
1276
1279
|
pivotby: T(e.pivotByFields),
|
|
1277
1280
|
detail: T(e.detailFields)
|
|
1278
1281
|
},
|
|
1279
|
-
expectedMetricAliases: t
|
|
1280
|
-
(n) => n.id && (a.get(n.id) ?? 0) > 1 ? [ie(n)] : []
|
|
1281
|
-
)
|
|
1282
|
+
expectedMetricAliases: Ve(t)
|
|
1282
1283
|
};
|
|
1283
1284
|
}
|
|
1284
1285
|
class u extends Error {
|
|
@@ -1289,7 +1290,7 @@ class u extends Error {
|
|
|
1289
1290
|
this.cause = a, this.name = "PivotResultLifecycleError";
|
|
1290
1291
|
}
|
|
1291
1292
|
}
|
|
1292
|
-
function
|
|
1293
|
+
function Ge(e) {
|
|
1293
1294
|
if (!Array.isArray(e) || e.some(
|
|
1294
1295
|
(r) => !r || typeof r != "object" || Array.isArray(r) || typeof r.key != "string" || !r.key || typeof r.name != "string" || typeof r.label != "string"
|
|
1295
1296
|
))
|
|
@@ -1344,7 +1345,7 @@ function O(e) {
|
|
|
1344
1345
|
}
|
|
1345
1346
|
return t;
|
|
1346
1347
|
}
|
|
1347
|
-
function
|
|
1348
|
+
function Be(e) {
|
|
1348
1349
|
if (e === void 0) return {};
|
|
1349
1350
|
if (!e || typeof e != "object" || Array.isArray(e))
|
|
1350
1351
|
throw new u(
|
|
@@ -1370,7 +1371,7 @@ function L(e, t) {
|
|
|
1370
1371
|
);
|
|
1371
1372
|
return e;
|
|
1372
1373
|
}
|
|
1373
|
-
function
|
|
1374
|
+
function Ue(e, t) {
|
|
1374
1375
|
if (!e || typeof e != "object" || Array.isArray(e) || e.version !== 1)
|
|
1375
1376
|
throw new u(
|
|
1376
1377
|
"A canonical pivot result requires its versioned result contract."
|
|
@@ -1414,7 +1415,7 @@ function Be(e, t) {
|
|
|
1414
1415
|
throw new u(
|
|
1415
1416
|
"Canonical pivot contract must classify every authoritative result column exactly once."
|
|
1416
1417
|
);
|
|
1417
|
-
const y =
|
|
1418
|
+
const y = Be(
|
|
1418
1419
|
r.columnClassifications
|
|
1419
1420
|
);
|
|
1420
1421
|
if (Object.keys(y).some(
|
|
@@ -1451,7 +1452,7 @@ function q(e, t) {
|
|
|
1451
1452
|
"The metric-alias bindings do not match the authored metric instances."
|
|
1452
1453
|
);
|
|
1453
1454
|
}
|
|
1454
|
-
function
|
|
1455
|
+
function Ze(e) {
|
|
1455
1456
|
if (!Array.isArray(e) || e.some(
|
|
1456
1457
|
(t) => !t || typeof t != "object" || Array.isArray(t)
|
|
1457
1458
|
))
|
|
@@ -1460,7 +1461,7 @@ function Ue(e) {
|
|
|
1460
1461
|
);
|
|
1461
1462
|
return e;
|
|
1462
1463
|
}
|
|
1463
|
-
function
|
|
1464
|
+
function He(e, t) {
|
|
1464
1465
|
e.forEach((r, a) => {
|
|
1465
1466
|
t.forEach((n) => {
|
|
1466
1467
|
if (!Object.prototype.hasOwnProperty.call(r, n.key) || r[n.key] === void 0)
|
|
@@ -1470,7 +1471,7 @@ function Ze(e, t) {
|
|
|
1470
1471
|
});
|
|
1471
1472
|
});
|
|
1472
1473
|
}
|
|
1473
|
-
function
|
|
1474
|
+
function Ye(e, t, r) {
|
|
1474
1475
|
const a = new Set(t.map((n) => n.key));
|
|
1475
1476
|
["groupby", "detail"].forEach((n) => {
|
|
1476
1477
|
Object.entries(e.byRole[n] ?? {}).forEach(
|
|
@@ -1497,8 +1498,8 @@ function V(e, t) {
|
|
|
1497
1498
|
);
|
|
1498
1499
|
});
|
|
1499
1500
|
}
|
|
1500
|
-
function
|
|
1501
|
-
const t =
|
|
1501
|
+
function Xe(e) {
|
|
1502
|
+
const t = Ze(e.records), r = Ge(e.columns), a = Ue(
|
|
1502
1503
|
e.pivotResultContract,
|
|
1503
1504
|
r
|
|
1504
1505
|
), n = a.expectedRoleFieldIds.pivotby ?? [];
|
|
@@ -1532,7 +1533,7 @@ function Ye(e) {
|
|
|
1532
1533
|
"A loaded_valid pivot result must carry at least one record."
|
|
1533
1534
|
);
|
|
1534
1535
|
const i = O(e.columnKeyMap);
|
|
1535
|
-
q(i, a),
|
|
1536
|
+
q(i, a), Ye(i, r, a), V(a, r);
|
|
1536
1537
|
const o = r.filter(
|
|
1537
1538
|
(s) => a.columnKinds[s.key] === "pivot_metric"
|
|
1538
1539
|
);
|
|
@@ -1548,7 +1549,7 @@ function Ye(e) {
|
|
|
1548
1549
|
} catch (s) {
|
|
1549
1550
|
throw s instanceof le ? new u(s.message, s) : s;
|
|
1550
1551
|
}
|
|
1551
|
-
return
|
|
1552
|
+
return He(t, r), {
|
|
1552
1553
|
pivotResultState: "loaded_valid",
|
|
1553
1554
|
records: t,
|
|
1554
1555
|
columns: r,
|
|
@@ -1556,7 +1557,7 @@ function Ye(e) {
|
|
|
1556
1557
|
pivotResultContract: a
|
|
1557
1558
|
};
|
|
1558
1559
|
}
|
|
1559
|
-
function
|
|
1560
|
+
function _t(e) {
|
|
1560
1561
|
const t = /* @__PURE__ */ new Set();
|
|
1561
1562
|
["groupby", "detail"].forEach((i) => {
|
|
1562
1563
|
Object.values(e.columnKeyMap.byRole[i] ?? {}).forEach((o) => {
|
|
@@ -1594,7 +1595,7 @@ function bt(e) {
|
|
|
1594
1595
|
)
|
|
1595
1596
|
)
|
|
1596
1597
|
};
|
|
1597
|
-
return
|
|
1598
|
+
return Xe({
|
|
1598
1599
|
pivotResultState: e.records.length === 0 ? "loaded_empty" : "loaded_valid",
|
|
1599
1600
|
pivotResultContract: n,
|
|
1600
1601
|
records: e.records,
|
|
@@ -1604,38 +1605,39 @@ function bt(e) {
|
|
|
1604
1605
|
}
|
|
1605
1606
|
export {
|
|
1606
1607
|
Ke as A,
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1608
|
+
ht as B,
|
|
1609
|
+
Ve as C,
|
|
1610
|
+
bt as D,
|
|
1611
|
+
u as E,
|
|
1612
|
+
Xe as F,
|
|
1613
|
+
_t as G,
|
|
1614
|
+
gt as M,
|
|
1613
1615
|
j as P,
|
|
1614
1616
|
p as R,
|
|
1615
|
-
|
|
1617
|
+
wt as a,
|
|
1616
1618
|
de as b,
|
|
1617
1619
|
A as c,
|
|
1618
1620
|
B as d,
|
|
1619
1621
|
U as e,
|
|
1620
|
-
|
|
1622
|
+
st as f,
|
|
1621
1623
|
Z as g,
|
|
1622
|
-
|
|
1624
|
+
ct as h,
|
|
1623
1625
|
he as i,
|
|
1624
|
-
|
|
1626
|
+
lt as j,
|
|
1625
1627
|
Ne as k,
|
|
1626
1628
|
Le as l,
|
|
1627
1629
|
qe as m,
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
+
vt as n,
|
|
1631
|
+
pt as o,
|
|
1630
1632
|
ye as p,
|
|
1631
|
-
|
|
1633
|
+
xt as q,
|
|
1632
1634
|
ge as r,
|
|
1633
|
-
|
|
1635
|
+
St as s,
|
|
1634
1636
|
R as t,
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1637
|
+
ut as u,
|
|
1638
|
+
mt as v,
|
|
1639
|
+
dt as w,
|
|
1640
|
+
ft as x,
|
|
1639
1641
|
Te as y,
|
|
1640
|
-
|
|
1642
|
+
yt as z
|
|
1641
1643
|
};
|