react-semaphor 0.1.425 → 0.1.426
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/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +42 -39
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +1 -1
- package/dist/chunks/{calendar-preferences-dialog-BLaSWhLl.js → calendar-preferences-dialog-C-gN-vlq.js} +1 -1
- package/dist/chunks/{calendar-preferences-dialog-DJwV0aqn.js → calendar-preferences-dialog-tBSngRN-.js} +2 -2
- package/dist/chunks/{catalog-field-grounding-DcxPLns0.js → catalog-field-grounding-AOGwWu0K.js} +2 -2
- package/dist/chunks/{code-editor-Bkk7s8hI.js → code-editor-Pod1s6SK.js} +6552 -6296
- package/dist/chunks/code-editor-tfzm8LWW.js +138 -0
- package/dist/chunks/{comparison-document-migration-CQJ0DZlL.js → comparison-document-migration-BJH1idOd.js} +1 -1
- package/dist/chunks/{comparison-document-migration-Db64RWYD.js → comparison-document-migration-b6c3xiWh.js} +1 -1
- package/dist/chunks/dashboard-JNK2ly_e.js +1402 -0
- package/dist/chunks/{dashboard-5agU0G_D.js → dashboard-ZoKNg47G.js} +50334 -49718
- package/dist/chunks/{dashboard-briefing-launcher-CII8-4qo.js → dashboard-briefing-launcher-0kR-QThz.js} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-qyEVfuOm.js → dashboard-briefing-launcher-BE-sNAzW.js} +4 -4
- package/dist/chunks/{dashboard-controls-PJpeYZHw.js → dashboard-controls-BUYTVauu.js} +1 -1
- package/dist/chunks/{dashboard-controls-aJY0FNPP.js → dashboard-controls-Ce_Bps8f.js} +5 -5
- package/dist/chunks/dashboard-date-comparison-definition-BaYxjLi5.js +167 -0
- package/dist/chunks/dashboard-date-comparison-definition-DGZr3m-b.js +1 -0
- package/dist/chunks/{dashboard-json-CzHSP6Fa.js → dashboard-json-4quaFoSw.js} +3 -3
- package/dist/chunks/{dashboard-json-DtmR5yCf.js → dashboard-json-81uc8aVR.js} +1 -1
- package/dist/chunks/{edit-dashboard-visual-AkZzwBCV.js → edit-dashboard-visual-DqQsH7rN.js} +4562 -4508
- package/dist/chunks/edit-dashboard-visual-nVRXv1Lq.js +182 -0
- package/dist/chunks/metric-comparison-BKgkMy9r.js +1 -0
- package/dist/chunks/metric-comparison-CWweq9RG.js +387 -0
- package/dist/chunks/{use-create-flow-overlay-state-DmuReEnk.js → use-create-flow-overlay-state-CoANTEXS.js} +1 -1
- package/dist/chunks/{use-create-flow-overlay-state-ByOKVV2K.js → use-create-flow-overlay-state-DUVIsF0y.js} +2 -2
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/dashboard-authoring/index.cjs +1 -1
- package/dist/dashboard-authoring/index.js +3 -3
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +2 -2
- package/dist/data-app-sdk-validation/index.js +1 -1
- 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/analytics-protocol.d.ts +40 -2
- package/dist/types/dashboard.d.ts +25 -0
- package/dist/types/main.d.ts +35 -5
- package/dist/types/surfboard.d.ts +25 -0
- package/dist/types/types.d.ts +25 -0
- package/package.json +1 -1
- package/dist/chunks/code-editor-CkXyNgYc.js +0 -138
- package/dist/chunks/dashboard-MKIqgGDp.js +0 -1402
- package/dist/chunks/edit-dashboard-visual-Cif6uDqN.js +0 -182
- package/dist/chunks/metric-comparison-4oA4ouU9.js +0 -354
- package/dist/chunks/metric-comparison-nQKquVnx.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";require("./analyze-result-contract-ege_u6Nl.js");const L=require("./metric-comparison-nQKquVnx.js"),I=["lg","md","sm","xs","xxs"],V=15,_=new Set(["previous_period","same_period_last_year","start_vs_end","target"]),k=new Set([..._,"none",""]);function l(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function E(e){const r=l(e.preferences)?e.preferences:void 0,o=r&&l(r.kpiVisualOptions)?r.kpiVisualOptions:void 0,s=r&&l(r.tableVisualOptions)?r.tableVisualOptions:void 0;return{preferences:r,kpiOptions:o,kpiComparison:o&&l(o.metricComparison)?o.metricComparison:void 0,kpiComparisonPresent:!!o&&"metricComparison"in o,tableOptions:s,tableComparison:s&&l(s.metricComparison)?s.metricComparison:void 0,tableComparisonPresent:!!s&&"metricComparison"in s}}function O(e){const r=[],o=(s,p)=>{if(Array.isArray(s)){s.forEach((n,c)=>o(n,`${p}[${c}]`));return}if(!l(s))return;const m=s.config;if(l(m)){const n=E(s),c=!!(n.kpiComparisonPresent||n.tableComparisonPresent),d=m.metricColumns,a=Array.isArray(d)?d.flatMap((t,i)=>l(t)?[{index:i,metric:t}]:[]):[];if((a.some(({metric:t})=>"comparisonType"in t)||c)&&r.push({path:p,card:s,metrics:a,malformedMetricIndexes:Array.isArray(d)?d.flatMap((t,i)=>l(t)?[]:[i]):[],malformedMetricColumns:"metricColumns"in m&&!Array.isArray(d),hasLegacyPresentation:c}),"metricColumns"in m||c)return}Object.entries(s).forEach(([n,c])=>o(c,p?`${p}.${n}`:n))};return o(e,"$"),r}const T={difference:"difference",change:"percent_change",change_difference:"both",ratio:"ratio"};function $(e,r){if(!e)return;const o=Object.fromEntries(r.flatMap(s=>typeof e[s]=="string"?[[s,e[s]]]:[]));return Object.keys(o).length?o:void 0}function N(e,r,o){if(e!==void 0){if(!l(e)){o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:r,message:"Legacy comparison formatOptions must be an object."});return}Object.entries(e).forEach(([s,p])=>{if(s==="decimalPlaces"){(typeof p!="number"||!Number.isInteger(p)||p<0||p>6)&&o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.decimalPlaces`,message:"Legacy comparison decimalPlaces must be an integer from 0 through 6."});return}s==="type"&&(p===void 0||p==="auto")||p!==void 0&&o.push({severity:"error",code:"unsupported_comparison_format",path:`${r}.${s}`,message:`Legacy comparison format option "${s}" has no canonical presentation mapping.`})})}}function C(e,r){const o=r==="kpi"?e.calculationType:e.calculatedAs,s=r==="table"&&o===void 0?"both":T[String(o)],p=l(e.formatOptions)?e.formatOptions:void 0,m=l(e.conditionalLabels)?e.conditionalLabels:void 0,n=l(r==="kpi"?e.colorConfig:e.colors)?r==="kpi"?e.colorConfig:e.colors:void 0,c={};if(s&&(c.displayMode=s),typeof(p==null?void 0:p.decimalPlaces)=="number"&&(c.precision=p.decimalPlaces),r==="kpi"){const t=e.showArrow!==!1,i=e.showColor!==!1;c.indicatorStyle=t?i?"arrow_badge":"arrow":i?"badge":"none",c.showColor=i,(e.position==="left"||e.position==="right"||e.position==="top")&&(c.position=e.position),typeof e.conditionalLabel=="boolean"&&(c.conditionalLabel=e.conditionalLabel),typeof e.labelName=="string"&&(c.labelName=e.labelName)}else(e.indicatorStyle==="arrow_badge"||e.indicatorStyle==="arrow"||e.indicatorStyle==="badge"||e.indicatorStyle==="none")&&(c.indicatorStyle=e.indicatorStyle);const d=m?{...$(m,["increase","decrease"]),...typeof m.noChange=="string"?{neutral:m.noChange}:typeof m.neutral=="string"?{neutral:m.neutral}:{}}:void 0;d&&Object.keys(d).length&&(c.conditionalLabels=d);const a=n?{...$(n,["increase","decrease"]),...typeof n.noChange=="string"?{neutral:n.noChange}:typeof n.neutral=="string"?{neutral:n.neutral}:{}}:void 0;return a&&Object.keys(a).length&&(c.colors=a),c}function w(e){return{...L.COMPARISON_PRESENTATION_DEFAULTS,...e}}function A(e){return e.some(({metric:r})=>r.comparisonType==="previous_period"||r.comparisonType==="same_period_last_year"||r.comparisonType==="target"?!0:l(r.comparison)&&r.comparison.mode==="explicit")}function v(e){const r=e.card.config;return e.metrics.length===2&&(r.groupByColumns===void 0||Array.isArray(r.groupByColumns)&&r.groupByColumns.length===0)}function P(e,r,o,s){const p=r==="kpi"?["enabled","calculationType","formatOptions","showArrow","showColor","conditionalLabel","labelName","position","conditionalLabels","colorConfig","lowerIsBetter"]:["calculatedAs","indicatorStyle","formatOptions","colors","lowerIsBetter"];Object.keys(e).forEach(t=>{p.includes(t)||s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}`,message:`Unknown legacy comparison presentation field "${t}" cannot be dropped automatically.`})});const m=r==="kpi"?"calculationType":"calculatedAs";e[m]!==void 0&&!T[String(e[m])]&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${m}`,message:`Legacy comparison ${m} is unsupported.`}),r==="kpi"&&e.position!==void 0&&!["left","right","top"].includes(String(e.position))&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.position`,message:"Legacy comparison position is unsupported."}),r==="kpi"&&e.labelName!==void 0&&typeof e.labelName!="string"&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.labelName`,message:"Legacy comparison labelName must be a string."}),(r==="kpi"?[["conditionalLabels",["increase","decrease","noChange"]],["colorConfig",["increase","decrease","noChange"]]]:[["colors",["increase","decrease","neutral"]]]).forEach(([t,i])=>{if(e[t]!==void 0){if(!l(e[t])){s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}`,message:`Legacy comparison ${t} must be an object.`});return}Object.entries(e[t]).forEach(([u,f])=>{i.includes(u)?typeof f!="string"&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}.${u}`,message:`Legacy comparison ${t}.${u} must be a string.`}):s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}.${u}`,message:`Unknown legacy comparison ${t} field "${u}" cannot be dropped automatically.`})})}}),(r==="kpi"?["enabled","showArrow","showColor","conditionalLabel","lowerIsBetter"]:["lowerIsBetter"]).forEach(t=>{e[t]!==void 0&&typeof e[t]!="boolean"&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}`,message:`Legacy comparison ${t} must be a boolean.`})}),r==="table"&&e.indicatorStyle!==void 0&&!["arrow_badge","arrow","badge","none"].includes(String(e.indicatorStyle))&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.indicatorStyle`,message:"Legacy comparison indicatorStyle is unsupported."}),N(e.formatOptions,`${o}.formatOptions`,s);const d=C(e,r);L.validateComparisonPresentationSpec(d,o).errors.forEach(t=>{s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:t.path||o,message:t.message})})}function S(e){const r=E(e.card),o=r.kpiComparison?C(r.kpiComparison,"kpi"):void 0,s=r.tableComparison?C(r.tableComparison,"table"):void 0;return{namespaces:r,kpi:o,table:s,presentation:o||s}}function B(e){const r=l(e.preferences)?e.preferences:{},o=l(r.kpiVisualOptions)?r.kpiVisualOptions:{},s=l(o.metricComparison)?o.metricComparison:{},p=l(r.tableVisualOptions)?r.tableVisualOptions:{},m=l(p.metricComparison)?p.metricComparison:{};return o.lowerIsBetter===!0||s.lowerIsBetter===!0||m.lowerIsBetter===!0?"lower_is_better":"higher_is_better"}function D(e){switch(e.comparisonType){case"previous_period":return{mode:"explicit",spec:{kind:"previous_period"}};case"same_period_last_year":return{mode:"explicit",spec:{kind:"previous_year"}};case"target":return{mode:"explicit",spec:{kind:"target",targetValue:e.targetValue}};default:return}}function M(e){const r=l(e.preferences)?e.preferences:void 0;if(!r)return;const o=l(r.kpiVisualOptions)?r.kpiVisualOptions:void 0;o&&delete o.lowerIsBetter;const s=l(r.tableVisualOptions)?r.tableVisualOptions:void 0,p=s&&l(s.metricComparison)?s.metricComparison:void 0;p&&delete p.lowerIsBetter}function R(e){const r=O(e);if(!r.length)return{document:e,changed:!1,changes:[],diagnostics:[]};const o=[];if(r.forEach(n=>{var c,d,a,t;if(n.malformedMetricColumns&&o.push({severity:"error",code:"malformed_metric_columns",path:`${n.path}.config.metricColumns`,message:"Metric columns must be an array before comparison migration."}),n.malformedMetricIndexes.forEach(i=>{o.push({severity:"error",code:"malformed_metric_columns",path:`${n.path}.config.metricColumns[${i}]`,message:"Metric columns must contain objects before comparison migration."})}),n.metrics.forEach(({metric:i,index:u})=>{if(!("comparisonType"in i))return;const f=`${n.path}.config.metricColumns[${u}]`,g=String(i.comparisonType||"");"comparison"in i&&o.push({severity:"error",code:"conflicting_comparison_contracts",path:f,message:"Metric contains both legacy and canonical comparison configuration; resolve the conflict before migration."});const h=l(i.parameters)?i.parameters:void 0,b=h&&l(h.windowTransform)?h.windowTransform:void 0;_.has(g)&&(b==null?void 0:b.function)==="previous_period_delta"&&o.push({severity:"error",code:"conflicting_comparison_window_transform",path:f,message:"A metric cannot combine baseline comparison with previous_period_delta; resolve the authoring intent before migration."}),k.has(g)||o.push({severity:"error",code:"unsupported_comparison_type",path:`${f}.comparisonType`,message:`Unsupported legacy metric comparison type "${g}".`}),i.comparisonType==="target"&&(typeof i.targetValue!="number"||!Number.isFinite(i.targetValue))&&o.push({severity:"error",code:"invalid_target_value",path:`${f}.targetValue`,message:"Legacy target comparison requires a finite metric targetValue."}),i.comparisonType==="start_vs_end"&&o.push({severity:"error",code:"unsupported_start_vs_end",path:`${f}.comparisonType`,message:"start_vs_end is retired and cannot be migrated automatically."}),i.targetValue!==void 0&&i.comparisonType!=="target"&&o.push({severity:"warning",code:"stray_target_value",path:`${f}.targetValue`,message:"Dead non-target targetValue will be removed without changing the baseline."})}),n.hasLegacyPresentation){const{namespaces:i,kpi:u,table:f}=S(n),g=[(c=i.kpiOptions)==null?void 0:c.lowerIsBetter,(d=i.kpiComparison)==null?void 0:d.lowerIsBetter,(a=i.tableComparison)==null?void 0:a.lowerIsBetter].filter(h=>typeof h=="boolean");new Set(g).size>1&&o.push({severity:"error",code:"conflicting_legacy_polarity",path:`${n.path}.preferences`,message:"Legacy comparison polarity values disagree; resolve the conflict before migration."}),((t=i.kpiOptions)==null?void 0:t.lowerIsBetter)!==void 0&&typeof i.kpiOptions.lowerIsBetter!="boolean"&&o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.kpiVisualOptions.lowerIsBetter`,message:"Legacy comparison lowerIsBetter must be a boolean."}),i.kpiComparisonPresent&&!i.kpiComparison&&o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.kpiVisualOptions.metricComparison`,message:"Legacy KPI comparison presentation must be an object."}),i.tableComparisonPresent&&!i.tableComparison&&o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.tableVisualOptions.metricComparison`,message:"Legacy table comparison presentation must be an object."}),"comparisonPresentation"in(i.preferences||{})&&o.push({severity:"error",code:"conflicting_comparison_presentation_contracts",path:`${n.path}.preferences.comparisonPresentation`,message:"Card contains both legacy and canonical comparison presentation; resolve the conflict before migration."}),i.kpiComparison&&typeof i.kpiComparison.enabled=="boolean"&&"metricPairComparisonEnabled"in(i.preferences||{})&&v(n)&&o.push({severity:"error",code:"conflicting_comparison_presentation_contracts",path:`${n.path}.preferences.metricPairComparisonEnabled`,message:"Card contains both legacy and canonical metric-pair enablement; resolve the conflict before migration."}),i.kpiComparison&&P(i.kpiComparison,"kpi",`${n.path}.preferences.kpiVisualOptions.metricComparison`,o),i.tableComparison&&P(i.tableComparison,"table",`${n.path}.preferences.tableVisualOptions.metricComparison`,o),u&&f&&JSON.stringify(w(u))!==JSON.stringify(w(f))&&o.push({severity:"error",code:"conflicting_legacy_presentation_namespaces",path:`${n.path}.preferences`,message:"KPI and table comparison presentation values disagree; resolve the conflict before migration."})}}),o.some(n=>n.severity==="error"))return{document:e,changed:!1,changes:[],diagnostics:o};const s=JSON.parse(JSON.stringify(e)),p=O(s),m=[];return p.forEach(n=>{var d;const c=B(n.card);if(n.metrics.forEach(({metric:a,index:t})=>{if(!("comparisonType"in a))return;const i=String(a.comparisonType||""),u=`${n.path}.config.metricColumns[${t}]`,f=D(a),g=["comparisonType"];delete a.comparisonType,"targetValue"in a&&(delete a.targetValue,g.push("targetValue")),"comparisonDisplay"in a&&(delete a.comparisonDisplay,g.push("comparisonDisplay")),f?a.comparison=f:delete a.comparison,_.has(i)&&(a.comparisonPolarity=c),m.push({kind:"metric",path:u,metricId:typeof a.id=="string"?a.id:void 0,legacyType:i,comparison:f,comparisonPolarity:_.has(i)?c:void 0,removedFields:g})}),M(n.card),n.hasLegacyPresentation){const{namespaces:a,presentation:t}=S(n),i=(d=a.kpiComparison)==null?void 0:d.enabled,u={...t};typeof i=="boolean"&&A(n.metrics)&&(u.showComparison=i);const f=typeof i=="boolean"&&v(n)?i:void 0,g=typeof i=="boolean"&&!A(n.metrics)&&!v(n)?["kpiVisualOptions.metricComparison.enabled"]:void 0,h=a.preferences,b=[];n.metrics.forEach(({metric:y})=>{"comparisonPolarity"in y||(y.comparisonPolarity=c,typeof y.id=="string"&&b.push(y.id))}),Object.keys(u).length&&(h.comparisonPresentation=u),f!==void 0&&(h.metricPairComparisonEnabled=f),a.kpiOptions&&delete a.kpiOptions.metricComparison,a.tableOptions&&delete a.tableOptions.metricComparison,m.push({kind:"presentation",path:`${n.path}.preferences`,comparisonPresentation:Object.keys(u).length?u:void 0,metricPairComparisonEnabled:f,comparisonPolarityMetricIds:b,intentionallyDiscardedFields:g,removedFields:[...a.kpiComparison?["kpiVisualOptions.metricComparison"]:[],...a.tableComparison?["tableVisualOptions.metricComparison"]:[]]})}}),{document:s,changed:!0,changes:m,diagnostics:o}}exports.DASHBOARD_AUTHORING_BREAKPOINTS=I;exports.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS=V;exports.transformComparisonDocument=R;
|
|
1
|
+
"use strict";require("./analyze-result-contract-ege_u6Nl.js");const L=require("./metric-comparison-BKgkMy9r.js"),I=["lg","md","sm","xs","xxs"],V=15,_=new Set(["previous_period","same_period_last_year","start_vs_end","target"]),k=new Set([..._,"none",""]);function l(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function E(e){const r=l(e.preferences)?e.preferences:void 0,o=r&&l(r.kpiVisualOptions)?r.kpiVisualOptions:void 0,s=r&&l(r.tableVisualOptions)?r.tableVisualOptions:void 0;return{preferences:r,kpiOptions:o,kpiComparison:o&&l(o.metricComparison)?o.metricComparison:void 0,kpiComparisonPresent:!!o&&"metricComparison"in o,tableOptions:s,tableComparison:s&&l(s.metricComparison)?s.metricComparison:void 0,tableComparisonPresent:!!s&&"metricComparison"in s}}function O(e){const r=[],o=(s,p)=>{if(Array.isArray(s)){s.forEach((n,c)=>o(n,`${p}[${c}]`));return}if(!l(s))return;const m=s.config;if(l(m)){const n=E(s),c=!!(n.kpiComparisonPresent||n.tableComparisonPresent),d=m.metricColumns,a=Array.isArray(d)?d.flatMap((t,i)=>l(t)?[{index:i,metric:t}]:[]):[];if((a.some(({metric:t})=>"comparisonType"in t)||c)&&r.push({path:p,card:s,metrics:a,malformedMetricIndexes:Array.isArray(d)?d.flatMap((t,i)=>l(t)?[]:[i]):[],malformedMetricColumns:"metricColumns"in m&&!Array.isArray(d),hasLegacyPresentation:c}),"metricColumns"in m||c)return}Object.entries(s).forEach(([n,c])=>o(c,p?`${p}.${n}`:n))};return o(e,"$"),r}const T={difference:"difference",change:"percent_change",change_difference:"both",ratio:"ratio"};function $(e,r){if(!e)return;const o=Object.fromEntries(r.flatMap(s=>typeof e[s]=="string"?[[s,e[s]]]:[]));return Object.keys(o).length?o:void 0}function N(e,r,o){if(e!==void 0){if(!l(e)){o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:r,message:"Legacy comparison formatOptions must be an object."});return}Object.entries(e).forEach(([s,p])=>{if(s==="decimalPlaces"){(typeof p!="number"||!Number.isInteger(p)||p<0||p>6)&&o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.decimalPlaces`,message:"Legacy comparison decimalPlaces must be an integer from 0 through 6."});return}s==="type"&&(p===void 0||p==="auto")||p!==void 0&&o.push({severity:"error",code:"unsupported_comparison_format",path:`${r}.${s}`,message:`Legacy comparison format option "${s}" has no canonical presentation mapping.`})})}}function C(e,r){const o=r==="kpi"?e.calculationType:e.calculatedAs,s=r==="table"&&o===void 0?"both":T[String(o)],p=l(e.formatOptions)?e.formatOptions:void 0,m=l(e.conditionalLabels)?e.conditionalLabels:void 0,n=l(r==="kpi"?e.colorConfig:e.colors)?r==="kpi"?e.colorConfig:e.colors:void 0,c={};if(s&&(c.displayMode=s),typeof(p==null?void 0:p.decimalPlaces)=="number"&&(c.precision=p.decimalPlaces),r==="kpi"){const t=e.showArrow!==!1,i=e.showColor!==!1;c.indicatorStyle=t?i?"arrow_badge":"arrow":i?"badge":"none",c.showColor=i,(e.position==="left"||e.position==="right"||e.position==="top")&&(c.position=e.position),typeof e.conditionalLabel=="boolean"&&(c.conditionalLabel=e.conditionalLabel),typeof e.labelName=="string"&&(c.labelName=e.labelName)}else(e.indicatorStyle==="arrow_badge"||e.indicatorStyle==="arrow"||e.indicatorStyle==="badge"||e.indicatorStyle==="none")&&(c.indicatorStyle=e.indicatorStyle);const d=m?{...$(m,["increase","decrease"]),...typeof m.noChange=="string"?{neutral:m.noChange}:typeof m.neutral=="string"?{neutral:m.neutral}:{}}:void 0;d&&Object.keys(d).length&&(c.conditionalLabels=d);const a=n?{...$(n,["increase","decrease"]),...typeof n.noChange=="string"?{neutral:n.noChange}:typeof n.neutral=="string"?{neutral:n.neutral}:{}}:void 0;return a&&Object.keys(a).length&&(c.colors=a),c}function w(e){return{...L.COMPARISON_PRESENTATION_DEFAULTS,...e}}function A(e){return e.some(({metric:r})=>r.comparisonType==="previous_period"||r.comparisonType==="same_period_last_year"||r.comparisonType==="target"?!0:l(r.comparison)&&r.comparison.mode==="explicit")}function v(e){const r=e.card.config;return e.metrics.length===2&&(r.groupByColumns===void 0||Array.isArray(r.groupByColumns)&&r.groupByColumns.length===0)}function P(e,r,o,s){const p=r==="kpi"?["enabled","calculationType","formatOptions","showArrow","showColor","conditionalLabel","labelName","position","conditionalLabels","colorConfig","lowerIsBetter"]:["calculatedAs","indicatorStyle","formatOptions","colors","lowerIsBetter"];Object.keys(e).forEach(t=>{p.includes(t)||s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}`,message:`Unknown legacy comparison presentation field "${t}" cannot be dropped automatically.`})});const m=r==="kpi"?"calculationType":"calculatedAs";e[m]!==void 0&&!T[String(e[m])]&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${m}`,message:`Legacy comparison ${m} is unsupported.`}),r==="kpi"&&e.position!==void 0&&!["left","right","top"].includes(String(e.position))&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.position`,message:"Legacy comparison position is unsupported."}),r==="kpi"&&e.labelName!==void 0&&typeof e.labelName!="string"&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.labelName`,message:"Legacy comparison labelName must be a string."}),(r==="kpi"?[["conditionalLabels",["increase","decrease","noChange"]],["colorConfig",["increase","decrease","noChange"]]]:[["colors",["increase","decrease","neutral"]]]).forEach(([t,i])=>{if(e[t]!==void 0){if(!l(e[t])){s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}`,message:`Legacy comparison ${t} must be an object.`});return}Object.entries(e[t]).forEach(([u,f])=>{i.includes(u)?typeof f!="string"&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}.${u}`,message:`Legacy comparison ${t}.${u} must be a string.`}):s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}.${u}`,message:`Unknown legacy comparison ${t} field "${u}" cannot be dropped automatically.`})})}}),(r==="kpi"?["enabled","showArrow","showColor","conditionalLabel","lowerIsBetter"]:["lowerIsBetter"]).forEach(t=>{e[t]!==void 0&&typeof e[t]!="boolean"&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.${t}`,message:`Legacy comparison ${t} must be a boolean.`})}),r==="table"&&e.indicatorStyle!==void 0&&!["arrow_badge","arrow","badge","none"].includes(String(e.indicatorStyle))&&s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.indicatorStyle`,message:"Legacy comparison indicatorStyle is unsupported."}),N(e.formatOptions,`${o}.formatOptions`,s);const d=C(e,r);L.validateComparisonPresentationSpec(d,o).errors.forEach(t=>{s.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:t.path||o,message:t.message})})}function S(e){const r=E(e.card),o=r.kpiComparison?C(r.kpiComparison,"kpi"):void 0,s=r.tableComparison?C(r.tableComparison,"table"):void 0;return{namespaces:r,kpi:o,table:s,presentation:o||s}}function B(e){const r=l(e.preferences)?e.preferences:{},o=l(r.kpiVisualOptions)?r.kpiVisualOptions:{},s=l(o.metricComparison)?o.metricComparison:{},p=l(r.tableVisualOptions)?r.tableVisualOptions:{},m=l(p.metricComparison)?p.metricComparison:{};return o.lowerIsBetter===!0||s.lowerIsBetter===!0||m.lowerIsBetter===!0?"lower_is_better":"higher_is_better"}function D(e){switch(e.comparisonType){case"previous_period":return{mode:"explicit",spec:{kind:"previous_period"}};case"same_period_last_year":return{mode:"explicit",spec:{kind:"previous_year"}};case"target":return{mode:"explicit",spec:{kind:"target",targetValue:e.targetValue}};default:return}}function M(e){const r=l(e.preferences)?e.preferences:void 0;if(!r)return;const o=l(r.kpiVisualOptions)?r.kpiVisualOptions:void 0;o&&delete o.lowerIsBetter;const s=l(r.tableVisualOptions)?r.tableVisualOptions:void 0,p=s&&l(s.metricComparison)?s.metricComparison:void 0;p&&delete p.lowerIsBetter}function R(e){const r=O(e);if(!r.length)return{document:e,changed:!1,changes:[],diagnostics:[]};const o=[];if(r.forEach(n=>{var c,d,a,t;if(n.malformedMetricColumns&&o.push({severity:"error",code:"malformed_metric_columns",path:`${n.path}.config.metricColumns`,message:"Metric columns must be an array before comparison migration."}),n.malformedMetricIndexes.forEach(i=>{o.push({severity:"error",code:"malformed_metric_columns",path:`${n.path}.config.metricColumns[${i}]`,message:"Metric columns must contain objects before comparison migration."})}),n.metrics.forEach(({metric:i,index:u})=>{if(!("comparisonType"in i))return;const f=`${n.path}.config.metricColumns[${u}]`,g=String(i.comparisonType||"");"comparison"in i&&o.push({severity:"error",code:"conflicting_comparison_contracts",path:f,message:"Metric contains both legacy and canonical comparison configuration; resolve the conflict before migration."});const h=l(i.parameters)?i.parameters:void 0,b=h&&l(h.windowTransform)?h.windowTransform:void 0;_.has(g)&&(b==null?void 0:b.function)==="previous_period_delta"&&o.push({severity:"error",code:"conflicting_comparison_window_transform",path:f,message:"A metric cannot combine baseline comparison with previous_period_delta; resolve the authoring intent before migration."}),k.has(g)||o.push({severity:"error",code:"unsupported_comparison_type",path:`${f}.comparisonType`,message:`Unsupported legacy metric comparison type "${g}".`}),i.comparisonType==="target"&&(typeof i.targetValue!="number"||!Number.isFinite(i.targetValue))&&o.push({severity:"error",code:"invalid_target_value",path:`${f}.targetValue`,message:"Legacy target comparison requires a finite metric targetValue."}),i.comparisonType==="start_vs_end"&&o.push({severity:"error",code:"unsupported_start_vs_end",path:`${f}.comparisonType`,message:"start_vs_end is retired and cannot be migrated automatically."}),i.targetValue!==void 0&&i.comparisonType!=="target"&&o.push({severity:"warning",code:"stray_target_value",path:`${f}.targetValue`,message:"Dead non-target targetValue will be removed without changing the baseline."})}),n.hasLegacyPresentation){const{namespaces:i,kpi:u,table:f}=S(n),g=[(c=i.kpiOptions)==null?void 0:c.lowerIsBetter,(d=i.kpiComparison)==null?void 0:d.lowerIsBetter,(a=i.tableComparison)==null?void 0:a.lowerIsBetter].filter(h=>typeof h=="boolean");new Set(g).size>1&&o.push({severity:"error",code:"conflicting_legacy_polarity",path:`${n.path}.preferences`,message:"Legacy comparison polarity values disagree; resolve the conflict before migration."}),((t=i.kpiOptions)==null?void 0:t.lowerIsBetter)!==void 0&&typeof i.kpiOptions.lowerIsBetter!="boolean"&&o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.kpiVisualOptions.lowerIsBetter`,message:"Legacy comparison lowerIsBetter must be a boolean."}),i.kpiComparisonPresent&&!i.kpiComparison&&o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.kpiVisualOptions.metricComparison`,message:"Legacy KPI comparison presentation must be an object."}),i.tableComparisonPresent&&!i.tableComparison&&o.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.tableVisualOptions.metricComparison`,message:"Legacy table comparison presentation must be an object."}),"comparisonPresentation"in(i.preferences||{})&&o.push({severity:"error",code:"conflicting_comparison_presentation_contracts",path:`${n.path}.preferences.comparisonPresentation`,message:"Card contains both legacy and canonical comparison presentation; resolve the conflict before migration."}),i.kpiComparison&&typeof i.kpiComparison.enabled=="boolean"&&"metricPairComparisonEnabled"in(i.preferences||{})&&v(n)&&o.push({severity:"error",code:"conflicting_comparison_presentation_contracts",path:`${n.path}.preferences.metricPairComparisonEnabled`,message:"Card contains both legacy and canonical metric-pair enablement; resolve the conflict before migration."}),i.kpiComparison&&P(i.kpiComparison,"kpi",`${n.path}.preferences.kpiVisualOptions.metricComparison`,o),i.tableComparison&&P(i.tableComparison,"table",`${n.path}.preferences.tableVisualOptions.metricComparison`,o),u&&f&&JSON.stringify(w(u))!==JSON.stringify(w(f))&&o.push({severity:"error",code:"conflicting_legacy_presentation_namespaces",path:`${n.path}.preferences`,message:"KPI and table comparison presentation values disagree; resolve the conflict before migration."})}}),o.some(n=>n.severity==="error"))return{document:e,changed:!1,changes:[],diagnostics:o};const s=JSON.parse(JSON.stringify(e)),p=O(s),m=[];return p.forEach(n=>{var d;const c=B(n.card);if(n.metrics.forEach(({metric:a,index:t})=>{if(!("comparisonType"in a))return;const i=String(a.comparisonType||""),u=`${n.path}.config.metricColumns[${t}]`,f=D(a),g=["comparisonType"];delete a.comparisonType,"targetValue"in a&&(delete a.targetValue,g.push("targetValue")),"comparisonDisplay"in a&&(delete a.comparisonDisplay,g.push("comparisonDisplay")),f?a.comparison=f:delete a.comparison,_.has(i)&&(a.comparisonPolarity=c),m.push({kind:"metric",path:u,metricId:typeof a.id=="string"?a.id:void 0,legacyType:i,comparison:f,comparisonPolarity:_.has(i)?c:void 0,removedFields:g})}),M(n.card),n.hasLegacyPresentation){const{namespaces:a,presentation:t}=S(n),i=(d=a.kpiComparison)==null?void 0:d.enabled,u={...t};typeof i=="boolean"&&A(n.metrics)&&(u.showComparison=i);const f=typeof i=="boolean"&&v(n)?i:void 0,g=typeof i=="boolean"&&!A(n.metrics)&&!v(n)?["kpiVisualOptions.metricComparison.enabled"]:void 0,h=a.preferences,b=[];n.metrics.forEach(({metric:y})=>{"comparisonPolarity"in y||(y.comparisonPolarity=c,typeof y.id=="string"&&b.push(y.id))}),Object.keys(u).length&&(h.comparisonPresentation=u),f!==void 0&&(h.metricPairComparisonEnabled=f),a.kpiOptions&&delete a.kpiOptions.metricComparison,a.tableOptions&&delete a.tableOptions.metricComparison,m.push({kind:"presentation",path:`${n.path}.preferences`,comparisonPresentation:Object.keys(u).length?u:void 0,metricPairComparisonEnabled:f,comparisonPolarityMetricIds:b,intentionallyDiscardedFields:g,removedFields:[...a.kpiComparison?["kpiVisualOptions.metricComparison"]:[],...a.tableComparison?["tableVisualOptions.metricComparison"]:[]]})}}),{document:s,changed:!0,changes:m,diagnostics:o}}exports.DASHBOARD_AUTHORING_BREAKPOINTS=I;exports.DASHBOARD_AUTHORING_MAX_GENERATED_CARDS=V;exports.transformComparisonDocument=R;
|