react-semaphor 0.1.484 → 0.1.486

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.
Files changed (29) hide show
  1. package/dist/chunks/{dashboard-briefing-launcher-DRDcW4mQ.js → dashboard-briefing-launcher-BLPYBFZn.js} +3 -3
  2. package/dist/chunks/{dashboard-briefing-launcher-D_kXgE3t.cjs → dashboard-briefing-launcher-Bc8IJ2Bo.cjs} +1 -1
  3. package/dist/chunks/{dashboard-controls-977Q-WRS.js → dashboard-controls-4dmUovsq.js} +3 -3
  4. package/dist/chunks/{dashboard-controls-Ct7DmF75.cjs → dashboard-controls-DQ95FIgN.cjs} +1 -1
  5. package/dist/chunks/{dashboard-json-CACL_cT0.js → dashboard-json-B8uqjktD.js} +1 -1
  6. package/dist/chunks/{dashboard-json-D_isBS5e.cjs → dashboard-json-HPBVir83.cjs} +1 -1
  7. package/dist/chunks/{edit-dashboard-visual-HJ-j-JY7.js → edit-dashboard-visual-CQHnffN_.js} +2 -2
  8. package/dist/chunks/{edit-dashboard-visual-B07XUER6.cjs → edit-dashboard-visual-Dx7c7rdg.cjs} +1 -1
  9. package/dist/chunks/{editor-action-buttons-BkEqVLGi.cjs → editor-action-buttons-DXKTuaGM.cjs} +1 -1
  10. package/dist/chunks/{editor-action-buttons-cmb--PWY.js → editor-action-buttons-Dt990Wd9.js} +1 -1
  11. package/dist/chunks/{index-BtTPcpTa.cjs → index-BMBjEw3O.cjs} +173 -173
  12. package/dist/chunks/{index-D9rSByc1.js → index-E4GmfQa7.js} +16767 -16751
  13. package/dist/chunks/pivot-header-presentation-BBM9y_3s.cjs +4 -0
  14. package/dist/chunks/{pivot-header-presentation-tpb_J900.js → pivot-header-presentation-C5a6YCrP.js} +81 -72
  15. package/dist/chunks/{report-preferences-dialog-DgNi-Omm.cjs → report-preferences-dialog-CW1uGxxj.cjs} +1 -1
  16. package/dist/chunks/{report-preferences-dialog-CTc9nwkP.js → report-preferences-dialog-DBoyiHdV.js} +1 -1
  17. package/dist/dashboard/index.cjs +1 -1
  18. package/dist/dashboard/index.js +1 -1
  19. package/dist/data-app-builder/index.cjs +1 -1
  20. package/dist/data-app-builder/index.js +1 -1
  21. package/dist/format-utils/index.cjs +3 -3
  22. package/dist/format-utils/index.js +91 -89
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.js +4 -4
  25. package/dist/surfboard/index.cjs +1 -1
  26. package/dist/surfboard/index.js +2 -2
  27. package/dist/types/format-utils.d.ts +4 -5
  28. package/package.json +1 -1
  29. package/dist/chunks/pivot-header-presentation-8Ra1RfHg.cjs +0 -4
@@ -0,0 +1,4 @@
1
+ "use strict";var Z=Object.defineProperty;var B=(e,t,r)=>t in e?Z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var p=(e,t,r)=>B(e,typeof t!="symbol"?t+"":t,r);const c=require("./index-ByQgqT9d.cjs"),M=require("./pivot-result-lifecycle-D_bRCqaB.cjs"),j=require("./index-F25jnH0p.cjs"),H=require("./metric-comparison-x0lipytf.cjs"),v=["day","hour","minute","second","millisecond"],A={day:864e5,hour:36e5,minute:6e4,second:1e3,millisecond:1},Y={day:"d",hour:"hr",minute:"min",second:"s",millisecond:"ms"},W={day:["day","days"],hour:["hour","hours"],minute:["minute","minutes"],second:["second","seconds"],millisecond:["millisecond","milliseconds"]};function q(e){return e==="day"||e==="hour"||e==="minute"||e==="second"||e==="millisecond"}function R(e,t){return q(e)?e:t}function S(e,t){return v.indexOf(R(e,t))}function K(e,t){const r=S(e,"day"),o=S(t,"second"),n=Math.min(r,o),a=Math.max(r,o);return v.slice(n,a+1)}function J(e,t){return e*A[R(t,"second")]}function Q(e,t){const r=K(t.largestUnit,t.smallestUnit),o=r[r.length-1],n=A[o];let a=Math.round(e/n)*n;return r.map(i=>{const s=A[i],l=Math.floor(a/s);return a-=l*s,{unit:i,value:l}})}function z(e,t){const r=e.filter(a=>a.value!==0),o=r.length>0?r:[e[e.length-1]],n=typeof t=="number"&&Number.isFinite(t)?Math.max(1,Math.trunc(t)):o.length;return o.slice(0,n).map(a=>`${a.value}${Y[a.unit]}`).join(" ")}function ee(e,t){const r=e.filter(a=>a.value!==0),o=r.length>0?r:[e[e.length-1]],n=typeof t=="number"&&Number.isFinite(t)?Math.max(1,Math.trunc(t)):o.length;return o.slice(0,n).map(a=>{const[i,s]=W[a.unit];return`${a.value} ${a.value===1?i:s}`}).join(" ")}function te(e){const t=e.some(l=>l.unit==="day"&&l.value!==0),r=e.some(l=>l.unit==="millisecond"),o=e.findIndex(l=>l.value!==0),n=Math.max(0,e.length-2),a=t?0:o===-1?n:Math.min(o,n),i=o===-1?e.slice(n):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 r?s.replace(/:(\d{3})$/,".$1"):s}function re(e,t,r){const o=`${r.prefix||""}${e}${r.suffix||""}`;return t?r.negativeInParentheses?`(${o})`:`-${o}`:o}function V(e,t={}){if(e==null)return"";const r=typeof e=="number"?e:typeof e=="string"&&e.trim()?Number(e):NaN;if(!Number.isFinite(r))return"";const o=t.inputUnit||"second",n=t.outputStyle==="digital"||t.outputStyle==="long"?t.outputStyle:"compact",a=r<0,i=Math.abs(J(r,o)),s=Q(i,t),l=n==="digital"?te(s):n==="long"?ee(s,t.maxUnits):z(s,t.maxUnits);return re(l,a,t)}function ne(e,t,r){const o={...t,locale:t.locale??r};if(o.type==="number")return M.formatNumericCanonical(e,o);const{prefix:n,suffix:a,...i}=o;return`${n??""}${M.formatNumericCanonical(e,{...i,negativeStyle:o.type==="currency"?o.negativeStyle:"minus"})}${a??""}`}function T(e,t,r){return e===null?{value:e,text:null}:!t||!c.isNumericCanonicalFormat(t)&&t.type!=="duration"?{value:e,text:M.formatNumericCanonical(e,{type:"number",locale:r})}:t.type==="duration"?{value:e,text:V(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:ne(e,t,r)}}function C(e,t,r,o){return e===null?{value:e,text:null}:o==="percent"?{value:e,text:M.formatNumericCanonical(e,{type:"percent",locale:r,minimumFractionDigits:t,maximumFractionDigits:t,percentValueMode:"fraction"})}:{value:e,text:M.formatNumericCanonical(e,{type:"number",locale:r,minimumFractionDigits:t,maximumFractionDigits:t,suffix:"×"})}}function _(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 oe(e,t){const r={mode:t.displayMode,current:T(e.currentValue,t.metricFormat,t.locale),comparison:T(e.comparisonValue,t.metricFormat,t.locale)};return(t.displayMode==="difference"||t.displayMode==="both")&&(r.difference=T(e.delta,t.metricFormat,t.locale)),(t.displayMode==="percent_change"||t.displayMode==="both")&&(r.percentChange=C(e.percentChange,_(t.precision,1),t.locale,"percent")),t.displayMode==="ratio"&&(r.ratio=C(e.ratio,_(t.precision,2),t.locale,"ratio")),r}function y(e,t){const r=c.toDate(e),o=c.toDate(t),n=r.getTime()-o.getTime();return n<0?-1:n>0?1:n}function ae(e){return c.constructFrom(e,Date.now())}function se(e,t){const r=c.toDate(e),o=c.toDate(t),n=r.getFullYear()-o.getFullYear(),a=r.getMonth()-o.getMonth();return n*12+a}function ie(e){return t=>{const o=(e?Math[e]:Math.trunc)(t);return o===0?0:o}}function le(e,t){return+c.toDate(e)-+c.toDate(t)}function ce(e){const t=c.toDate(e);return t.setHours(23,59,59,999),t}function ue(e){const t=c.toDate(e),r=t.getMonth();return t.setFullYear(t.getFullYear(),r+1,0),t.setHours(23,59,59,999),t}function fe(e){const t=c.toDate(e);return+ce(t)==+ue(t)}function me(e,t){const r=c.toDate(e),o=c.toDate(t),n=y(r,o),a=Math.abs(se(r,o));let i;if(a<1)i=0;else{r.getMonth()===1&&r.getDate()>27&&r.setDate(30),r.setMonth(r.getMonth()-n*a);let s=y(r,o)===-n;fe(c.toDate(e))&&a===1&&y(e,o)===1&&(s=!1),i=n*(a-Number(s))}return i===0?0:i}function ge(e,t,r){const o=le(e,t)/1e3;return ie(r==null?void 0:r.roundingMethod)(o)}function de(e,t,r){const o=c.getDefaultOptions(),n=(r==null?void 0:r.locale)??o.locale??c.enUS,a=2520,i=y(e,t);if(isNaN(i))throw new RangeError("Invalid time value");const s=Object.assign({},r,{addSuffix:r==null?void 0:r.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=ge(u,l),m=(c.getTimezoneOffsetInMilliseconds(u)-c.getTimezoneOffsetInMilliseconds(l))/1e3,f=Math.round((g-m)/60);let h;if(f<2)return r!=null&&r.includeSeconds?g<5?n.formatDistance("lessThanXSeconds",5,s):g<10?n.formatDistance("lessThanXSeconds",10,s):g<20?n.formatDistance("lessThanXSeconds",20,s):g<40?n.formatDistance("halfAMinute",0,s):g<60?n.formatDistance("lessThanXMinutes",1,s):n.formatDistance("xMinutes",1,s):f===0?n.formatDistance("lessThanXMinutes",1,s):n.formatDistance("xMinutes",f,s);if(f<45)return n.formatDistance("xMinutes",f,s);if(f<90)return n.formatDistance("aboutXHours",1,s);if(f<c.minutesInDay){const d=Math.round(f/60);return n.formatDistance("aboutXHours",d,s)}else{if(f<a)return n.formatDistance("xDays",1,s);if(f<c.minutesInMonth){const d=Math.round(f/c.minutesInDay);return n.formatDistance("xDays",d,s)}else if(f<c.minutesInMonth*2)return h=Math.round(f/c.minutesInMonth),n.formatDistance("aboutXMonths",h,s)}if(h=me(u,l),h<12){const d=Math.round(f/c.minutesInMonth);return n.formatDistance("xMonths",d,s)}else{const d=h%12,b=Math.trunc(h/12);return d<3?n.formatDistance("aboutXYears",b,s):d<9?n.formatDistance("overXYears",b,s):n.formatDistance("almostXYears",b+1,s)}}function I(e,t){return de(e,ae(e),t)}function he(e,t){return e&&e!=="auto"?e:t}function Me(e,t=new Date){try{const r={timeZone:e,timeZoneName:"short"},n=new Intl.DateTimeFormat("en-US",r).formatToParts(t).find(a=>a.type==="timeZoneName");return(n==null?void 0:n.value)||e}catch{return e}}function ye(e){try{const t={timeZone:e,timeZoneName:"long"},o=new Intl.DateTimeFormat("en-US",t).formatToParts(new Date).find(n=>n.type==="timeZoneName");return(o==null?void 0:o.value)||e}catch{return e}}function L(e,t="auto"){if(!e)return new Date(NaN);const r=e.endsWith("Z"),o=/[+-]\d{2}:?\d{2}$/.test(e),n=/\([A-Z]{3,4}\)$/.test(e);if(t==="auto")return r||o||n?new Date(e):new Date(e+"Z");if(t==="local"){if(r||o){const a=e.replace(/Z$/,"").replace(/[+-]\d{2}:?\d{2}$/,"");return new Date(a)}return new Date(e)}else return t==="UTC"?r?new Date(e):o?new Date(e):new Date(e+"Z"):r||o||n?new Date(e):j.fromZonedTime(e,t)}const De="MM/dd/yyyy",we=(e,t,r,o="auto")=>{if(!e)return"";try{const n=L(e,o);if(isNaN(n.getTime()))return e;const i=(t&&t.trim()?t:De).replace(/LLLL/g,"MMMM").replace(/LLL/g,"MMM");return r&&r!=="auto"?c.formatInTimeZone(n,r,i):c.format(n,i)}catch(n){return console.error("Date formatting error:",n),e}},be=(e,t="auto")=>{if(!e)return"";try{const r=L(e,t);return isNaN(r.getTime())?e:I(r,{addSuffix:!0})}catch(r){return console.error("Relative time formatting error:",r),e}};function N(e,t=","){if(e==null)return"";const r=String(e);return r.includes(t)||r.includes('"')||r.includes(`
2
+ `)||r.includes("\r")?`"${r.replace(/"/g,'""')}"`:r}function E(e,t=","){return e.map(r=>N(r,t)).join(t)}function O(e,t={}){const{delimiter:r=",",lineEnding:o=`
3
+ `}=t;return e.map(n=>E(n,r)).join(o)}function Te(e,t={}){if(e.length===0)return"";const{delimiter:r=",",lineEnding:o=`
4
+ `,includeHeaders:n=!0,columns:a}=t,i=a||Object.keys(e[0]),s=[];n&&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 O(s,{delimiter:r,lineEnding:o})}const P=1e4,Ae=1e6;function Le(e){return e>P}const xe="pdf-group-continuation";function $(e){if(!e.previousRow||e.row.isSubtotal===!0||e.row.isGrandTotal===!0||e.previousRow.isSubtotal===!0||e.previousRow.isGrandTotal===!0)return!0;for(let t=0;t<=e.levelIndex;t++)if(e.getValue(e.row,t)!==e.getValue(e.previousRow,t))return!0;return!1}const U="__TOTAL__";function D(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function w(e){return e===U}function pe(e){const t=new Map,r=(e.groupByColumns??[]).map((n,a)=>{var u,g,m;if(!D(n))throw new Error(`Aggregate groupByColumns[${a}] is invalid`);const i=typeof n.id=="string"&&n.id.length>0?n.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 n.alias=="string"&&n.alias.length>0?n.alias:typeof n.name=="string"&&n.name.length>0?n.name:void 0);if(!l)throw new Error(`Aggregate groupByColumns[${a}] has no output key`);return[i,n.alias,n.name,l].forEach(f=>{typeof f=="string"&&f.length>0&&t.set(f,l)}),l}),o=(e.rowAggregates??[]).flatMap(n=>!D(n)||typeof n.function!="string"||typeof n.groupLevel!="string"?[]:[{function:n.function,groupLevel:n.groupLevel==="ALL"?"ALL":t.get(n.groupLevel)||n.groupLevel,...typeof n.label=="string"?{label:n.label}:{}}]);return{groupColumnKeys:r,rowAggregates:o}}function F(e){return e==="SUM"?"Total":e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function G(e){var r;if(e.customLabel)return e.customLabel;const t=F(e.aggregateFunction);if(e.levelValue!==void 0&&!w(e.levelValue)){if(e.levelValue===null){const n=(r=e.formatValue)==null?void 0:r.call(e,null);return n?`Subtotal ${n}`:`Subtotal ${t}`}const o=e.formatValue?e.formatValue(e.levelValue):String(e.levelValue);if(o)return`Subtotal (${o})`}return`Subtotal ${t}`}function k(e,t){return t||`Grand ${F(e)}`}function Se(e){const t=e.context.groupColumnKeys.indexOf(e.columnKey);if(t<0)throw new Error(`Aggregate group column "${e.columnKey}" is unknown`);return $({row:e.row,previousRow:e.previousRow,levelIndex:t,getValue:(r,o)=>r[e.context.groupColumnKeys[o]]})}function x(e){var o,n;const t=e.context.groupColumnKeys,r=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?k(r,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=(n=e.context.rowAggregates.find(u=>u.groupLevel===e.row.subtotalLevel&&u.function===r))==null?void 0:n.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||w(m)?"":e.formatValue(m,u),placement:"value",colSpan:1}}return{columnKey:u,text:G({aggregateFunction:r,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||w(i)?"":e.formatValue(i,a),placement:"value",colSpan:1}})}}function Ce(e){const t=x(e).cells.find(r=>r.columnKey===e.columnKey);if(!t)throw new Error(`Aggregate group column "${e.columnKey}" is unknown`);return t.text}function _e(e){return x(e).cells.map(t=>t.text)}class X extends Error{constructor(r,o){super(`${r}: ${o}`);p(this,"deliveryBlocking",!0);this.code=r,this.name="PivotHeaderPresentationError"}}function ve(e){var n;const t=e.mode??"formatted",r=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 X("missing_resolved_temporal_format",`Missing resolved temporal presentation for pivot field "${a.fieldId}"`);return H.formatTemporalBucket({value:a.value,metadata:a.temporalBucket,format:i})}),o=((n=e.metricLabel)==null?void 0:n.trim())||void 0;return{memberLabels:r,...o?{metricLabel:o}:{},flattenedLabel:[...r,...o?[o]:[]].join(" / ")}}exports.AGGREGATE_TOTAL_MEMBER_MARKER=U;exports.DIRECT_CSV_EXPORT_MAX_ROWS=P;exports.FULL_DATASET_CSV_EXPORT_MAX_ROWS=Ae;exports.PDF_GROUP_CONTINUATION_CLASS=xe;exports.PivotHeaderPresentationError=X;exports.arrayToCSV=O;exports.arrayToCSVRow=E;exports.escapeCSVValue=N;exports.formatAggregateGrandTotalLabel=k;exports.formatAggregateGroupCell=Ce;exports.formatAggregateGroupRow=_e;exports.formatAggregateSubtotalLabel=G;exports.formatDate=we;exports.formatDistanceToNow=I;exports.formatDuration=V;exports.formatMetricComparison=oe;exports.formatRelativeTime=be;exports.getTimezoneAbbreviation=Me;exports.getTimezoneName=ye;exports.isAggregateTotalMemberMarker=w;exports.objectsToCSV=Te;exports.parseWithSourceTimezone=L;exports.presentAggregateGroupRow=x;exports.presentPivotHeader=ve;exports.requiresChunkedCsvExport=Le;exports.resolveAggregateTablePresentationContext=pe;exports.resolveTimezone=he;exports.shouldPresentAggregateGroupValue=Se;exports.shouldPresentGroupedTableValue=$;
@@ -1,11 +1,11 @@
1
- var R = Object.defineProperty;
2
- var F = (e, t, n) => t in e ? R(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
- var A = (e, t, n) => F(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { i as U, t as f, c as O, g as P, e as k, a as T, m as S, b as M, f as Z, d as X } from "./index-BS0_dp0l.js";
1
+ var E = Object.defineProperty;
2
+ var F = (e, t, n) => t in e ? E(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
+ var T = (e, t, n) => F(e, typeof t != "symbol" ? t + "" : t, n);
4
+ import { i as O, t as f, c as P, g as U, e as k, a as A, m as S, b as M, f as Z, d as G } from "./index-BS0_dp0l.js";
5
5
  import { b as y } from "./pivot-result-lifecycle-mjJ1rBvV.js";
6
- import { f as B } from "./index-CACdoqu3.js";
7
- import { h as G } from "./metric-comparison-CTexJ8V1.js";
8
- const I = [
6
+ import { f as X } from "./index-CACdoqu3.js";
7
+ import { h as B } from "./metric-comparison-CTexJ8V1.js";
8
+ const V = [
9
9
  "day",
10
10
  "hour",
11
11
  "minute",
@@ -33,18 +33,18 @@ const I = [
33
33
  function Y(e) {
34
34
  return e === "day" || e === "hour" || e === "minute" || e === "second" || e === "millisecond";
35
35
  }
36
- function V(e, t) {
36
+ function C(e, t) {
37
37
  return Y(e) ? e : t;
38
38
  }
39
39
  function v(e, t) {
40
- return I.indexOf(V(e, t));
40
+ return V.indexOf(C(e, t));
41
41
  }
42
42
  function K(e, t) {
43
43
  const n = v(e, "day"), o = v(t, "second"), r = Math.min(n, o), s = Math.max(n, o);
44
- return I.slice(r, s + 1);
44
+ return V.slice(r, s + 1);
45
45
  }
46
46
  function W(e, t) {
47
- return e * L[V(t, "second")];
47
+ return e * L[C(t, "second")];
48
48
  }
49
49
  function q(e, t) {
50
50
  const n = K(t.largestUnit, t.smallestUnit), o = n[n.length - 1], r = L[o];
@@ -101,7 +101,7 @@ function ne(e, t, n) {
101
101
  })}${s ?? ""}`;
102
102
  }
103
103
  function x(e, t, n) {
104
- return e === null ? { value: e, text: null } : !t || !U(t) && t.type !== "duration" ? {
104
+ return e === null ? { value: e, text: null } : !t || !O(t) && t.type !== "duration" ? {
105
105
  value: e,
106
106
  text: y(e, { type: "number", locale: n })
107
107
  } : t.type === "duration" ? {
@@ -139,13 +139,13 @@ function _(e, t, n, o) {
139
139
  })
140
140
  };
141
141
  }
142
- function C(e, t) {
142
+ function I(e, t) {
143
143
  if (e === void 0) return t;
144
144
  if (!Number.isInteger(e) || e < 0 || e > 6)
145
145
  throw new RangeError("Comparison precision must be an integer from 0 to 6.");
146
146
  return e;
147
147
  }
148
- function _e(e, t) {
148
+ function Ie(e, t) {
149
149
  const n = {
150
150
  mode: t.displayMode,
151
151
  current: x(
@@ -165,12 +165,12 @@ function _e(e, t) {
165
165
  t.locale
166
166
  )), (t.displayMode === "percent_change" || t.displayMode === "both") && (n.percentChange = _(
167
167
  e.percentChange,
168
- C(t.precision, 1),
168
+ I(t.precision, 1),
169
169
  t.locale,
170
170
  "percent"
171
171
  )), t.displayMode === "ratio" && (n.ratio = _(
172
172
  e.ratio,
173
- C(t.precision, 2),
173
+ I(t.precision, 2),
174
174
  t.locale,
175
175
  "ratio"
176
176
  )), n;
@@ -180,7 +180,7 @@ function w(e, t) {
180
180
  return r < 0 ? -1 : r > 0 ? 1 : r;
181
181
  }
182
182
  function re(e) {
183
- return O(e, Date.now());
183
+ return P(e, Date.now());
184
184
  }
185
185
  function oe(e, t) {
186
186
  const n = f(e), o = f(t), r = n.getFullYear() - o.getFullYear(), s = n.getMonth() - o.getMonth();
@@ -226,7 +226,7 @@ function fe(e, t, n) {
226
226
  return se(n == null ? void 0 : n.roundingMethod)(o);
227
227
  }
228
228
  function me(e, t, n) {
229
- const o = P(), r = (n == null ? void 0 : n.locale) ?? o.locale ?? k, s = 2520, i = w(e, t);
229
+ const o = U(), r = (n == null ? void 0 : n.locale) ?? o.locale ?? k, s = 2520, i = w(e, t);
230
230
  if (isNaN(i))
231
231
  throw new RangeError("Invalid time value");
232
232
  const a = Object.assign({}, n, {
@@ -235,7 +235,7 @@ function me(e, t, n) {
235
235
  });
236
236
  let l, c;
237
237
  i > 0 ? (l = f(t), c = f(e)) : (l = f(e), c = f(t));
238
- const g = fe(c, l), m = (T(c) - T(l)) / 1e3, u = Math.round((g - m) / 60);
238
+ const g = fe(c, l), m = (A(c) - A(l)) / 1e3, u = Math.round((g - m) / 60);
239
239
  let h;
240
240
  if (u < 2)
241
241
  return n != null && n.includeSeconds ? g < 5 ? r.formatDistance("lessThanXSeconds", 5, a) : g < 10 ? r.formatDistance("lessThanXSeconds", 10, a) : g < 20 ? r.formatDistance("lessThanXSeconds", 20, a) : g < 40 ? r.formatDistance("halfAMinute", 0, a) : g < 60 ? r.formatDistance("lessThanXMinutes", 1, a) : r.formatDistance("xMinutes", 1, a) : u === 0 ? r.formatDistance("lessThanXMinutes", 1, a) : r.formatDistance("xMinutes", u, a);
@@ -266,10 +266,10 @@ function me(e, t, n) {
266
266
  function ge(e, t) {
267
267
  return me(e, re(e), t);
268
268
  }
269
- function Ce(e, t) {
269
+ function Ve(e, t) {
270
270
  return e && e !== "auto" ? e : t;
271
271
  }
272
- function Ie(e, t = /* @__PURE__ */ new Date()) {
272
+ function Ce(e, t = /* @__PURE__ */ new Date()) {
273
273
  try {
274
274
  const n = {
275
275
  timeZone: e,
@@ -280,7 +280,7 @@ function Ie(e, t = /* @__PURE__ */ new Date()) {
280
280
  return e;
281
281
  }
282
282
  }
283
- function Ve(e) {
283
+ function Ne(e) {
284
284
  try {
285
285
  const t = {
286
286
  timeZone: e,
@@ -305,9 +305,9 @@ function N(e, t = "auto") {
305
305
  return new Date(s);
306
306
  }
307
307
  return new Date(e);
308
- } else return t === "UTC" ? n ? new Date(e) : o ? new Date(e) : /* @__PURE__ */ new Date(e + "Z") : n || o || r ? new Date(e) : B(e, t);
308
+ } else return t === "UTC" ? n ? new Date(e) : o ? new Date(e) : /* @__PURE__ */ new Date(e + "Z") : n || o || r ? new Date(e) : X(e, t);
309
309
  }
310
- const de = "MM/dd/yyyy", Ne = (e, t, n, o = "auto") => {
310
+ const de = "MM/dd/yyyy", Re = (e, t, n, o = "auto") => {
311
311
  if (!e)
312
312
  return "";
313
313
  try {
@@ -315,7 +315,7 @@ const de = "MM/dd/yyyy", Ne = (e, t, n, o = "auto") => {
315
315
  if (isNaN(r.getTime()))
316
316
  return e;
317
317
  const i = (t && t.trim() ? t : de).replace(/LLLL/g, "MMMM").replace(/LLL/g, "MMM");
318
- return n && n !== "auto" ? Z(r, n, i) : X(r, i);
318
+ return n && n !== "auto" ? Z(r, n, i) : G(r, i);
319
319
  } catch (r) {
320
320
  return console.error("Date formatting error:", r), e;
321
321
  }
@@ -364,16 +364,25 @@ function Ee(e, t = {}) {
364
364
  }
365
365
  return Me(a, { delimiter: n, lineEnding: o });
366
366
  }
367
- const we = 1e4, Re = 1e6;
368
- function Fe(e) {
367
+ const we = 1e4, Fe = 1e6;
368
+ function Oe(e) {
369
369
  return e > we;
370
370
  }
371
- const be = "__TOTAL__";
371
+ const Pe = "pdf-group-continuation";
372
+ function be(e) {
373
+ if (!e.previousRow || e.row.isSubtotal === !0 || e.row.isGrandTotal === !0 || e.previousRow.isSubtotal === !0 || e.previousRow.isGrandTotal === !0)
374
+ return !0;
375
+ for (let t = 0; t <= e.levelIndex; t++)
376
+ if (e.getValue(e.row, t) !== e.getValue(e.previousRow, t))
377
+ return !0;
378
+ return !1;
379
+ }
380
+ const De = "__TOTAL__";
372
381
  function b(e) {
373
382
  return typeof e == "object" && e !== null && !Array.isArray(e);
374
383
  }
375
384
  function p(e) {
376
- return e === be;
385
+ return e === De;
377
386
  }
378
387
  function Ue(e) {
379
388
  const t = /* @__PURE__ */ new Map(), n = (e.groupByColumns ?? []).map((r, s) => {
@@ -395,13 +404,13 @@ function Ue(e) {
395
404
  ]);
396
405
  return { groupColumnKeys: n, rowAggregates: o };
397
406
  }
398
- function $(e) {
407
+ function R(e) {
399
408
  return e === "SUM" ? "Total" : e.charAt(0).toUpperCase() + e.slice(1).toLowerCase();
400
409
  }
401
- function De(e) {
410
+ function xe(e) {
402
411
  var n;
403
412
  if (e.customLabel) return e.customLabel;
404
- const t = $(e.aggregateFunction);
413
+ const t = R(e.aggregateFunction);
405
414
  if (e.levelValue !== void 0 && !p(e.levelValue)) {
406
415
  if (e.levelValue === null) {
407
416
  const r = (n = e.formatValue) == null ? void 0 : n.call(e, null);
@@ -412,25 +421,23 @@ function De(e) {
412
421
  }
413
422
  return `Subtotal ${t}`;
414
423
  }
415
- function xe(e, t) {
416
- return t || `Grand ${$(e)}`;
424
+ function Le(e, t) {
425
+ return t || `Grand ${R(e)}`;
417
426
  }
418
- function Oe(e) {
427
+ function ke(e) {
419
428
  const t = e.context.groupColumnKeys.indexOf(e.columnKey);
420
429
  if (t < 0)
421
430
  throw new Error(
422
431
  `Aggregate group column "${e.columnKey}" is unknown`
423
432
  );
424
- if (!e.previousRow || e.row.isSubtotal === !0 || e.row.isGrandTotal === !0 || e.previousRow.isSubtotal === !0 || e.previousRow.isGrandTotal === !0)
425
- return !0;
426
- for (let n = 0; n <= t; n++) {
427
- const o = e.context.groupColumnKeys[n];
428
- if (e.row[o] !== e.previousRow[o])
429
- return !0;
430
- }
431
- return !1;
433
+ return be({
434
+ row: e.row,
435
+ previousRow: e.previousRow,
436
+ levelIndex: t,
437
+ getValue: (n, o) => n[e.context.groupColumnKeys[o]]
438
+ });
432
439
  }
433
- function E(e) {
440
+ function $(e) {
434
441
  var o, r;
435
442
  const t = e.context.groupColumnKeys, n = typeof e.row.aggregate == "string" ? e.row.aggregate : "SUM";
436
443
  if (e.row.isGrandTotal === !0) {
@@ -441,7 +448,7 @@ function E(e) {
441
448
  kind: "grand-total",
442
449
  cells: t.map((i, a) => ({
443
450
  columnKey: i,
444
- text: a === 0 ? xe(n, s) : "",
451
+ text: a === 0 ? Le(n, s) : "",
445
452
  placement: a === 0 ? "label" : "empty",
446
453
  colSpan: a === 0 ? t.length : 1
447
454
  }))
@@ -479,7 +486,7 @@ function E(e) {
479
486
  }
480
487
  return {
481
488
  columnKey: c,
482
- text: De({
489
+ text: xe({
483
490
  aggregateFunction: n,
484
491
  customLabel: l,
485
492
  levelValue: a[c],
@@ -504,25 +511,25 @@ function E(e) {
504
511
  })
505
512
  };
506
513
  }
507
- function Pe(e) {
508
- const t = E(e).cells.find(
514
+ function Ze(e) {
515
+ const t = $(e).cells.find(
509
516
  (n) => n.columnKey === e.columnKey
510
517
  );
511
518
  if (!t)
512
519
  throw new Error(`Aggregate group column "${e.columnKey}" is unknown`);
513
520
  return t.text;
514
521
  }
515
- function ke(e) {
516
- return E(e).cells.map((t) => t.text);
522
+ function Ge(e) {
523
+ return $(e).cells.map((t) => t.text);
517
524
  }
518
- class Le extends Error {
525
+ class pe extends Error {
519
526
  constructor(n, o) {
520
527
  super(`${n}: ${o}`);
521
- A(this, "deliveryBlocking", !0);
528
+ T(this, "deliveryBlocking", !0);
522
529
  this.code = n, this.name = "PivotHeaderPresentationError";
523
530
  }
524
531
  }
525
- function Ze(e) {
532
+ function Xe(e) {
526
533
  var r;
527
534
  const t = e.mode ?? "formatted", n = e.members.map((s) => {
528
535
  var a;
@@ -530,11 +537,11 @@ function Ze(e) {
530
537
  return s.value === null ? "" : String(s.value);
531
538
  const i = (a = e.resolveTemporalFormat) == null ? void 0 : a.call(e, s.fieldId);
532
539
  if (!i)
533
- throw new Le(
540
+ throw new pe(
534
541
  "missing_resolved_temporal_format",
535
542
  `Missing resolved temporal presentation for pivot field "${s.fieldId}"`
536
543
  );
537
- return G({
544
+ return B({
538
545
  value: s.value,
539
546
  metadata: s.temporalBucket,
540
547
  format: i
@@ -550,31 +557,33 @@ function Ze(e) {
550
557
  };
551
558
  }
552
559
  export {
553
- be as A,
560
+ De as A,
554
561
  we as D,
555
- Re as F,
556
- Le as P,
557
- Ne as a,
562
+ Fe as F,
563
+ Pe as P,
564
+ Re as a,
558
565
  ye as b,
559
566
  te as c,
560
- _e as d,
567
+ Ie as d,
561
568
  he as e,
562
569
  $e as f,
563
- Ie as g,
564
- Ve as h,
570
+ Ce as g,
571
+ Ne as h,
565
572
  Me as i,
566
- Fe as j,
573
+ Oe as j,
567
574
  p as k,
568
575
  Ue as l,
569
- De as m,
570
- xe as n,
576
+ xe as m,
577
+ Le as n,
571
578
  Ee as o,
572
579
  N as p,
573
- E as q,
574
- Ce as r,
575
- Oe as s,
576
- Pe as t,
577
- ke as u,
578
- Ze as v,
579
- ge as w
580
+ $ as q,
581
+ Ve as r,
582
+ ke as s,
583
+ Ze as t,
584
+ Ge as u,
585
+ pe as v,
586
+ Xe as w,
587
+ ge as x,
588
+ be as y
580
589
  };
@@ -1 +1 @@
1
- "use strict";const e=require("react/jsx-runtime"),o=require("react"),l=require("./index-BtTPcpTa.cjs"),u=require("./switch-EWWOPEdH.cjs"),V=require("./report-runtime-context-BfW4qiMJ.cjs");require("./x-B6ghREd2.cjs");require("./card-config-utils-D3Xuu0ub.cjs");require("./validators-DqIM0B3C.cjs");require("./analyze-result-contract-BX_nQmPN.cjs");const L=require("../value-format-preferences/index.cjs");function G(a={}){const{authToken:c,tokenProps:t}=l.useSemaphorContext(),m=u.useDashboardStore(p=>p.actions.applyResolvedCalendarPreferences),s=a.enabled??!0,i=(c==null?void 0:c.accessToken)??null,h=(t==null?void 0:t.apiServiceUrl)??null,[g,S]=o.useState(!1),[b,C]=o.useState(!1),[f,j]=o.useState(!1),[T,x]=o.useState(null),[w,P]=o.useState(null),v=o.useRef(i);v.current=i,o.useEffect(()=>{P(null),x(null),S(!1),C(!1),j(!1)},[i]);const N=o.useCallback(async p=>{const r=V.parseCalendarPreferencesResponse(await p.json());if(!r.ok)throw new Error("Calendar preferences response is invalid");return r.value},[]),k=o.useCallback(async()=>{if(!s||!i||!h)return;const p=i;S(!0),x(null);try{const r=await fetch(`${h}/v1/user-preferences/calendar`,{method:"GET",headers:{Authorization:`Bearer ${i}`}});if(!r.ok){const y=await r.json().catch(()=>({}));throw new Error(y.error||"Failed to fetch preferences")}const n=await N(r);v.current===p&&P(n)}catch(r){v.current===p&&x(r instanceof Error?r.message:"Unknown error")}finally{v.current===p&&S(!1)}},[i,h,s,N]);o.useEffect(()=>{s&&k()},[s,k]);const E=o.useCallback(async p=>{if(!i||!h)return x("Not authenticated"),!1;const r=i;C(!0),x(null);try{const n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(p)});if(!n.ok){const D=await n.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}const y=await N(n);return v.current!==r?!1:(P(y),m(y.resolved,y.sources),!0)}catch(n){return v.current===r&&x(n instanceof Error?n.message:"Unknown error"),!1}finally{v.current===r&&C(!1)}},[i,h,m,N]),A=o.useCallback(async()=>{if(!i||!h)return x("Not authenticated"),!1;const p=i;j(!0),x(null);try{const r=await fetch(`${h}/v1/user-preferences/calendar`,{method:"DELETE",headers:{Authorization:`Bearer ${i}`}});if(!r.ok){const y=await r.json().catch(()=>({}));throw new Error(y.error||"Failed to clear preferences")}const n=await N(r);return v.current!==p?!1:(P(n),m(n.resolved,n.sources),!0)}catch(r){return v.current===p&&x(r instanceof Error?r.message:"Unknown error"),!1}finally{v.current===p&&j(!1)}},[i,h,m,N]);return{preferences:w,isLoading:g,isSaving:b,isClearing:f,error:T,updatePreferences:E,clearPreferences:A,refetch:k}}const F=[{value:"America/New_York",label:"Eastern Time (US & Canada)"},{value:"America/Chicago",label:"Central Time (US & Canada)"},{value:"America/Denver",label:"Mountain Time (US & Canada)"},{value:"America/Los_Angeles",label:"Pacific Time (US & Canada)"},{value:"America/Phoenix",label:"Arizona"},{value:"America/Anchorage",label:"Alaska"},{value:"Pacific/Honolulu",label:"Hawaii"},{value:"Europe/London",label:"London"},{value:"Europe/Paris",label:"Paris, Berlin, Rome"},{value:"Asia/Tokyo",label:"Tokyo"},{value:"Asia/Shanghai",label:"Beijing, Shanghai"},{value:"Asia/Kolkata",label:"Mumbai, New Delhi"},{value:"Australia/Sydney",label:"Sydney"},{value:"UTC",label:"UTC"}],B=[{value:0,label:"Sunday"},{value:1,label:"Monday"},{value:6,label:"Saturday"}],R="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function W(){try{const a=Intl;if(a.supportedValuesOf)return a.supportedValuesOf("timeZone")}catch{}return F.map(a=>a.value)}function H(a){if(!a)return"default";if(a.tz!==a.weekStart)return"inherited";switch(a.tz){case"viewer_tenant":return"tenant";case"viewer_organization":return"organization";case"system_default":return"system";case"session_initial":return"embedded";default:return"default"}}function U(a){const c=F.find(t=>t.value===a);return c?c.label:a}function K(a){const c=B.find(t=>t.value===a);return c?c.label:String(a)}function J({active:a,onClose:c}){const{preferences:t,isLoading:m,isSaving:s,isClearing:i,updatePreferences:h,clearPreferences:g}=G({enabled:a}),S=l.useCalendarContext(),b=(t==null?void 0:t.resolved.tz)||(S==null?void 0:S.tz)||"UTC",C=(t==null?void 0:t.resolved.weekStart)??(S==null?void 0:S.weekStart)??1,[f,j]=o.useState((t==null?void 0:t.stored)===null),[T,x]=o.useState(!1),[w,P]=o.useState(b),[v,N]=o.useState(C),[k,E]=o.useState(!1),A=o.useMemo(()=>W(),[]),p=o.useMemo(()=>A.filter(d=>!F.some(M=>M.value===d)),[A]),r=o.useMemo(()=>U(w),[w]),n=t!=null&&t.inherited?U(t.inherited.tz):"UTC",y=t!=null&&t.inherited?K(t.inherited.weekStart):"Monday",D=H(t==null?void 0:t.inheritedSources);o.useEffect(()=>{if(!a){x(!1);return}T||(t&&j(t.stored===null),P(b),N(C))},[a,T,t,b,C]);const O=async()=>{if(m){l.ue.error("Preferences are still loading. Please try again.");return}f?await g()?(l.ue.success("Now using default settings."),c()):l.ue.error("Failed to save preferences. Please try again."):await h({tz:w,weekStart:v})?(l.ue.success("Preferences saved."),c()):l.ue.error("Failed to save preferences. Please try again.")},_=()=>{c()},z=s||i,$=z||m;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4 py-1",children:[e.jsxs(l.RadioGroup,{value:f?"defaults":"custom",onValueChange:d=>{x(!0),j(d==="defaults")},className:"space-y-0.5",children:[e.jsxs("label",{htmlFor:"mode-defaults",className:u.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",f&&"bg-muted/50"),onClick:()=>{x(!0),j(!0)},children:[e.jsx(l.RadioGroupItem,{value:"defaults",id:"mode-defaults",className:"mt-0.5"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-[13px] font-medium text-foreground",children:["Use ",D," defaults"]}),e.jsxs("p",{className:"text-[12px] text-muted-foreground",children:[n,", week starts ",y]})]})]}),e.jsxs("label",{htmlFor:"mode-custom",className:u.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",!f&&"bg-muted/50"),onClick:()=>{x(!0),j(!1)},children:[e.jsx(l.RadioGroupItem,{value:"custom",id:"mode-custom",className:"mt-0.5"}),e.jsx("p",{className:"flex-1 text-[13px] font-medium text-foreground",children:"Use custom settings"})]})]}),e.jsxs("div",{className:u.cn("space-y-4 border-t border-border/60 pt-4 transition-opacity",f&&"pointer-events-none opacity-50"),children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(u.Label,{className:R,children:"Timezone"}),e.jsxs(u.Popover,{open:k,onOpenChange:E,modal:!0,children:[e.jsx(u.PopoverTrigger,{asChild:!0,children:e.jsxs(u.Button,{variant:"outline",size:"xs",role:"combobox","aria-expanded":k,className:"w-full justify-between text-[12px] font-normal",disabled:f,children:[e.jsx("span",{className:"truncate",children:r}),e.jsx(l.ChevronsUpDown,{className:"ml-2 h-3.5 w-3.5 shrink-0 opacity-50"})]})}),e.jsx(u.PopoverContent,{className:"z-50 w-[--radix-popover-trigger-width] p-0",align:"start",children:e.jsxs(l.Command,{className:"overflow-visible",children:[e.jsx(l.CommandInput,{placeholder:"Search timezones…"}),e.jsxs(l.CommandList,{children:[e.jsx(l.CommandEmpty,{children:"No timezone found."}),e.jsx(l.CommandGroup,{heading:"Common",children:F.map(d=>e.jsxs(l.CommandItem,{value:`${d.value} ${d.label}`,onSelect:()=>{x(!0),P(d.value),E(!1)},children:[e.jsx(u.Check,{className:u.cn("h-3.5 w-3.5",w===d.value?"opacity-100":"opacity-0")}),e.jsx("span",{className:"flex-1",children:d.label}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:d.value})]},d.value))}),e.jsx(l.CommandSeparator,{}),e.jsx(l.CommandGroup,{heading:"All timezones",children:p.map(d=>e.jsxs(l.CommandItem,{value:d,onSelect:()=>{x(!0),P(d),E(!1)},children:[e.jsx(u.Check,{className:u.cn("h-3.5 w-3.5",w===d?"opacity-100":"opacity-0")}),d]},d))})]})]})})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(u.Label,{className:R,children:"Week starts on"}),e.jsx(l.RadioGroup,{value:String(v),onValueChange:d=>{x(!0),N(Number(d))},className:"flex gap-4",disabled:f,children:B.map(d=>e.jsxs("label",{htmlFor:`week-start-${d.value}`,className:u.cn("flex cursor-pointer items-center gap-2 text-[13px]",f&&"cursor-not-allowed"),children:[e.jsx(l.RadioGroupItem,{value:String(d.value),id:`week-start-${d.value}`,disabled:f}),d.label]},d.value))})]})]})]}),e.jsxs(l.DialogFooter,{children:[e.jsx(u.Button,{variant:"outline",size:"xs",onClick:_,disabled:z,children:"Cancel"}),e.jsx(u.Button,{size:"xs",onClick:O,disabled:$,children:z?e.jsxs(e.Fragment,{children:[e.jsx(u.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})}function Y(a={}){const{authToken:c,tokenProps:t}=l.useSemaphorContext(),m=u.useDashboardStore(r=>r.actions.applyResolvedValueFormatPreferences),s=a.enabled??!0,i=(c==null?void 0:c.accessToken)??null,h=(t==null?void 0:t.apiServiceUrl)??null,g=o.useRef(i);g.current=i;const[S,b]=o.useState(null),[C,f]=o.useState(!1),[j,T]=o.useState(!1),[x,w]=o.useState(!1),[P,v]=o.useState(null);o.useEffect(()=>{b(null),v(null),f(!1),T(!1),w(!1)},[i]);const N=o.useCallback(async r=>{const n=L.parseValueFormatPreferencesResponse(await r.json());if(!n.ok)throw new Error("Value format preferences response is invalid");return n.value},[]),k=o.useCallback(async(r,n)=>{if(!i||!h)throw new Error("Not authenticated");const y=await fetch(`${h}/v1/user-preferences/value-format`,{method:r,headers:{Authorization:`Bearer ${i}`,...n?{"Content-Type":"application/json"}:{}},body:n?JSON.stringify(n):void 0});if(!y.ok){const D=await y.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}return N(y)},[i,h,N]),E=o.useCallback(async()=>{if(!s||!i||!h)return;const r=i;f(!0),v(null);try{const n=await k("GET");g.current===r&&b(n)}catch(n){g.current===r&&v(n instanceof Error?n.message:"Unknown error")}finally{g.current===r&&f(!1)}},[i,h,s,k]);o.useEffect(()=>{s&&E()},[s,E]);const A=o.useCallback(async r=>{const n=i;T(!0),v(null);try{const y=await k("PATCH",r);return g.current!==n?!1:(b(y),m(y.resolved,y.sources),!0)}catch(y){return g.current===n&&v(y instanceof Error?y.message:"Unknown error"),!1}finally{g.current===n&&T(!1)}},[i,m,k]),p=o.useCallback(async()=>{const r=i;w(!0),v(null);try{const n=await k("DELETE");return g.current!==r?!1:(b(n),m(n.resolved,n.sources),!0)}catch(n){return g.current===r&&v(n instanceof Error?n.message:"Unknown error"),!1}finally{g.current===r&&w(!1)}},[i,m,k]);return{preferences:S,isLoading:C,isSaving:j,isClearing:x,error:P,updatePreferences:A,clearPreferences:p,refetch:E}}const I=["locale","dateStyle","dateTime.dateStyle","dateTime.timeStyle","defaultCurrency"];function q(a,c){var t,m;switch(c){case"locale":return a==null?void 0:a.locale;case"dateStyle":return a==null?void 0:a.dateStyle;case"dateTime.dateStyle":return(t=a==null?void 0:a.dateTime)==null?void 0:t.dateStyle;case"dateTime.timeStyle":return(m=a==null?void 0:a.dateTime)==null?void 0:m.timeStyle;case"defaultCurrency":return a==null?void 0:a.defaultCurrency}}function Z(a){var m,s;const c=(m=a==null?void 0:a.dateTime)==null?void 0:m.dateStyle,t=(s=a==null?void 0:a.dateTime)==null?void 0:s.timeStyle;return{locale:a==null?void 0:a.locale,dateStyle:a==null?void 0:a.dateStyle,dateTime:c===void 0&&t===void 0?void 0:{dateStyle:c,timeStyle:t},defaultCurrency:a==null?void 0:a.defaultCurrency}}function Q({active:a,onClose:c}){var g,S,b,C,f,j,T;const{preferences:t,isLoading:m,isSaving:s,updatePreferences:i}=Y({enabled:a});if(!a)return null;if(!t)return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx("div",{className:"flex min-h-36 items-center justify-center text-[12px] text-muted-foreground",children:m?"Loading preferences…":"Preferences unavailable."})}),e.jsxs(l.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(u.Button,{variant:"ghost",size:"xs",disabled:!0,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(u.Button,{variant:"outline",size:"xs",onClick:c,children:"Cancel"}),e.jsx(u.Button,{size:"xs",disabled:!0,children:"Save"})]})]})]});const h=[((g=t.stored)==null?void 0:g.locale)??"",((S=t.stored)==null?void 0:S.dateStyle)??"",((C=(b=t.stored)==null?void 0:b.dateTime)==null?void 0:C.dateStyle)??"",((j=(f=t.stored)==null?void 0:f.dateTime)==null?void 0:j.timeStyle)??"",((T=t.stored)==null?void 0:T.defaultCurrency)??""].join(":");return e.jsx(X,{preferences:t,isSaving:s,updatePreferences:i,onClose:c},h)}function X({preferences:a,isSaving:c,updatePreferences:t,onClose:m}){var b,C;const[s,i]=o.useState(()=>Z(a.stored)),h=(s.locale===void 0||L.canonicalizeSupportedLocale(s.locale)!==void 0)&&(s.defaultCurrency===void 0||L.canonicalizeSupportedCurrencyCode(s.defaultCurrency)!==void 0)&&(s.dateStyle===void 0||["short","medium","long"].includes(s.dateStyle))&&(((b=s.dateTime)==null?void 0:b.dateStyle)===void 0||["short","medium","long"].includes(s.dateTime.dateStyle))&&(((C=s.dateTime)==null?void 0:C.timeStyle)===void 0||["short","medium","long"].includes(s.dateTime.timeStyle)),g=async()=>{const f={...s.locale!==void 0?{locale:s.locale}:{},...s.dateStyle!==void 0?{dateStyle:s.dateStyle}:{},...s.dateTime?{dateTime:{...s.dateTime}}:{},...s.defaultCurrency!==void 0?{defaultCurrency:s.defaultCurrency}:{}},j=I.filter(w=>q(s,w)===void 0&&q(a.stored,w)!==void 0),T={...Object.keys(f).length>0?{set:f}:{},...j.length>0?{clear:j}:{}};(Object.keys(T).length===0?!0:await t(T))?(l.ue.success("Display format preferences saved."),m()):l.ue.error("Failed to save preferences. Please try again.")},S=async()=>{await t({clear:[...I]})?(l.ue.success("Display format preferences reset."),m()):l.ue.error("Failed to reset display format preferences. Please try again.")};return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx(l.DisplayFormatPreferencesFields,{value:s,inherited:a.inherited,inheritedSources:a.inheritedSources,onChange:i,disabled:c})}),e.jsxs(l.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(u.Button,{variant:"ghost",size:"xs",onClick:S,disabled:c||a.stored===null,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(u.Button,{variant:"outline",size:"xs",onClick:m,disabled:c,children:"Cancel"}),e.jsx(u.Button,{size:"xs",onClick:g,disabled:c||!h,children:c?e.jsxs(e.Fragment,{children:[e.jsx(u.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})]})}function ee({open:a,onOpenChange:c}){const[t,m]=o.useState("display"),s=()=>c(!1);return e.jsx(l.Dialog,{open:a,onOpenChange:c,children:e.jsxs(l.DialogContent,{className:"rounded-control border-border/60 sm:max-w-[440px] sm:rounded-control",children:[e.jsxs(l.DialogHeader,{children:[e.jsx(l.DialogTitle,{className:"text-[15px]",children:"Report preferences"}),e.jsx(l.DialogDescription,{className:"text-[13px] leading-5",children:"Set how values and Calendar periods appear for you."})]}),e.jsxs(u.Tabs,{value:t,onValueChange:m,children:[e.jsxs(u.TabsList,{variant:"underline",className:"w-full justify-start",children:[e.jsx(u.TabsTrigger,{value:"display",children:"Display formats"}),e.jsx(u.TabsTrigger,{value:"calendar",children:"Calendar"})]}),e.jsx(u.TabsContent,{value:"display",children:e.jsx(Q,{active:a&&t==="display",onClose:s})}),e.jsx(u.TabsContent,{value:"calendar",children:e.jsx(J,{active:a&&t==="calendar",onClose:s})})]})]})})}exports.ReportPreferencesDialog=ee;
1
+ "use strict";const e=require("react/jsx-runtime"),o=require("react"),l=require("./index-BMBjEw3O.cjs"),u=require("./switch-EWWOPEdH.cjs"),V=require("./report-runtime-context-BfW4qiMJ.cjs");require("./x-B6ghREd2.cjs");require("./card-config-utils-D3Xuu0ub.cjs");require("./validators-DqIM0B3C.cjs");require("./analyze-result-contract-BX_nQmPN.cjs");const L=require("../value-format-preferences/index.cjs");function G(a={}){const{authToken:c,tokenProps:t}=l.useSemaphorContext(),m=u.useDashboardStore(p=>p.actions.applyResolvedCalendarPreferences),s=a.enabled??!0,i=(c==null?void 0:c.accessToken)??null,h=(t==null?void 0:t.apiServiceUrl)??null,[g,S]=o.useState(!1),[b,C]=o.useState(!1),[f,j]=o.useState(!1),[T,x]=o.useState(null),[w,P]=o.useState(null),v=o.useRef(i);v.current=i,o.useEffect(()=>{P(null),x(null),S(!1),C(!1),j(!1)},[i]);const N=o.useCallback(async p=>{const r=V.parseCalendarPreferencesResponse(await p.json());if(!r.ok)throw new Error("Calendar preferences response is invalid");return r.value},[]),k=o.useCallback(async()=>{if(!s||!i||!h)return;const p=i;S(!0),x(null);try{const r=await fetch(`${h}/v1/user-preferences/calendar`,{method:"GET",headers:{Authorization:`Bearer ${i}`}});if(!r.ok){const y=await r.json().catch(()=>({}));throw new Error(y.error||"Failed to fetch preferences")}const n=await N(r);v.current===p&&P(n)}catch(r){v.current===p&&x(r instanceof Error?r.message:"Unknown error")}finally{v.current===p&&S(!1)}},[i,h,s,N]);o.useEffect(()=>{s&&k()},[s,k]);const E=o.useCallback(async p=>{if(!i||!h)return x("Not authenticated"),!1;const r=i;C(!0),x(null);try{const n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(p)});if(!n.ok){const D=await n.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}const y=await N(n);return v.current!==r?!1:(P(y),m(y.resolved,y.sources),!0)}catch(n){return v.current===r&&x(n instanceof Error?n.message:"Unknown error"),!1}finally{v.current===r&&C(!1)}},[i,h,m,N]),A=o.useCallback(async()=>{if(!i||!h)return x("Not authenticated"),!1;const p=i;j(!0),x(null);try{const r=await fetch(`${h}/v1/user-preferences/calendar`,{method:"DELETE",headers:{Authorization:`Bearer ${i}`}});if(!r.ok){const y=await r.json().catch(()=>({}));throw new Error(y.error||"Failed to clear preferences")}const n=await N(r);return v.current!==p?!1:(P(n),m(n.resolved,n.sources),!0)}catch(r){return v.current===p&&x(r instanceof Error?r.message:"Unknown error"),!1}finally{v.current===p&&j(!1)}},[i,h,m,N]);return{preferences:w,isLoading:g,isSaving:b,isClearing:f,error:T,updatePreferences:E,clearPreferences:A,refetch:k}}const F=[{value:"America/New_York",label:"Eastern Time (US & Canada)"},{value:"America/Chicago",label:"Central Time (US & Canada)"},{value:"America/Denver",label:"Mountain Time (US & Canada)"},{value:"America/Los_Angeles",label:"Pacific Time (US & Canada)"},{value:"America/Phoenix",label:"Arizona"},{value:"America/Anchorage",label:"Alaska"},{value:"Pacific/Honolulu",label:"Hawaii"},{value:"Europe/London",label:"London"},{value:"Europe/Paris",label:"Paris, Berlin, Rome"},{value:"Asia/Tokyo",label:"Tokyo"},{value:"Asia/Shanghai",label:"Beijing, Shanghai"},{value:"Asia/Kolkata",label:"Mumbai, New Delhi"},{value:"Australia/Sydney",label:"Sydney"},{value:"UTC",label:"UTC"}],B=[{value:0,label:"Sunday"},{value:1,label:"Monday"},{value:6,label:"Saturday"}],R="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function W(){try{const a=Intl;if(a.supportedValuesOf)return a.supportedValuesOf("timeZone")}catch{}return F.map(a=>a.value)}function H(a){if(!a)return"default";if(a.tz!==a.weekStart)return"inherited";switch(a.tz){case"viewer_tenant":return"tenant";case"viewer_organization":return"organization";case"system_default":return"system";case"session_initial":return"embedded";default:return"default"}}function U(a){const c=F.find(t=>t.value===a);return c?c.label:a}function K(a){const c=B.find(t=>t.value===a);return c?c.label:String(a)}function J({active:a,onClose:c}){const{preferences:t,isLoading:m,isSaving:s,isClearing:i,updatePreferences:h,clearPreferences:g}=G({enabled:a}),S=l.useCalendarContext(),b=(t==null?void 0:t.resolved.tz)||(S==null?void 0:S.tz)||"UTC",C=(t==null?void 0:t.resolved.weekStart)??(S==null?void 0:S.weekStart)??1,[f,j]=o.useState((t==null?void 0:t.stored)===null),[T,x]=o.useState(!1),[w,P]=o.useState(b),[v,N]=o.useState(C),[k,E]=o.useState(!1),A=o.useMemo(()=>W(),[]),p=o.useMemo(()=>A.filter(d=>!F.some(M=>M.value===d)),[A]),r=o.useMemo(()=>U(w),[w]),n=t!=null&&t.inherited?U(t.inherited.tz):"UTC",y=t!=null&&t.inherited?K(t.inherited.weekStart):"Monday",D=H(t==null?void 0:t.inheritedSources);o.useEffect(()=>{if(!a){x(!1);return}T||(t&&j(t.stored===null),P(b),N(C))},[a,T,t,b,C]);const O=async()=>{if(m){l.ue.error("Preferences are still loading. Please try again.");return}f?await g()?(l.ue.success("Now using default settings."),c()):l.ue.error("Failed to save preferences. Please try again."):await h({tz:w,weekStart:v})?(l.ue.success("Preferences saved."),c()):l.ue.error("Failed to save preferences. Please try again.")},_=()=>{c()},z=s||i,$=z||m;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4 py-1",children:[e.jsxs(l.RadioGroup,{value:f?"defaults":"custom",onValueChange:d=>{x(!0),j(d==="defaults")},className:"space-y-0.5",children:[e.jsxs("label",{htmlFor:"mode-defaults",className:u.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",f&&"bg-muted/50"),onClick:()=>{x(!0),j(!0)},children:[e.jsx(l.RadioGroupItem,{value:"defaults",id:"mode-defaults",className:"mt-0.5"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-[13px] font-medium text-foreground",children:["Use ",D," defaults"]}),e.jsxs("p",{className:"text-[12px] text-muted-foreground",children:[n,", week starts ",y]})]})]}),e.jsxs("label",{htmlFor:"mode-custom",className:u.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",!f&&"bg-muted/50"),onClick:()=>{x(!0),j(!1)},children:[e.jsx(l.RadioGroupItem,{value:"custom",id:"mode-custom",className:"mt-0.5"}),e.jsx("p",{className:"flex-1 text-[13px] font-medium text-foreground",children:"Use custom settings"})]})]}),e.jsxs("div",{className:u.cn("space-y-4 border-t border-border/60 pt-4 transition-opacity",f&&"pointer-events-none opacity-50"),children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(u.Label,{className:R,children:"Timezone"}),e.jsxs(u.Popover,{open:k,onOpenChange:E,modal:!0,children:[e.jsx(u.PopoverTrigger,{asChild:!0,children:e.jsxs(u.Button,{variant:"outline",size:"xs",role:"combobox","aria-expanded":k,className:"w-full justify-between text-[12px] font-normal",disabled:f,children:[e.jsx("span",{className:"truncate",children:r}),e.jsx(l.ChevronsUpDown,{className:"ml-2 h-3.5 w-3.5 shrink-0 opacity-50"})]})}),e.jsx(u.PopoverContent,{className:"z-50 w-[--radix-popover-trigger-width] p-0",align:"start",children:e.jsxs(l.Command,{className:"overflow-visible",children:[e.jsx(l.CommandInput,{placeholder:"Search timezones…"}),e.jsxs(l.CommandList,{children:[e.jsx(l.CommandEmpty,{children:"No timezone found."}),e.jsx(l.CommandGroup,{heading:"Common",children:F.map(d=>e.jsxs(l.CommandItem,{value:`${d.value} ${d.label}`,onSelect:()=>{x(!0),P(d.value),E(!1)},children:[e.jsx(u.Check,{className:u.cn("h-3.5 w-3.5",w===d.value?"opacity-100":"opacity-0")}),e.jsx("span",{className:"flex-1",children:d.label}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:d.value})]},d.value))}),e.jsx(l.CommandSeparator,{}),e.jsx(l.CommandGroup,{heading:"All timezones",children:p.map(d=>e.jsxs(l.CommandItem,{value:d,onSelect:()=>{x(!0),P(d),E(!1)},children:[e.jsx(u.Check,{className:u.cn("h-3.5 w-3.5",w===d?"opacity-100":"opacity-0")}),d]},d))})]})]})})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(u.Label,{className:R,children:"Week starts on"}),e.jsx(l.RadioGroup,{value:String(v),onValueChange:d=>{x(!0),N(Number(d))},className:"flex gap-4",disabled:f,children:B.map(d=>e.jsxs("label",{htmlFor:`week-start-${d.value}`,className:u.cn("flex cursor-pointer items-center gap-2 text-[13px]",f&&"cursor-not-allowed"),children:[e.jsx(l.RadioGroupItem,{value:String(d.value),id:`week-start-${d.value}`,disabled:f}),d.label]},d.value))})]})]})]}),e.jsxs(l.DialogFooter,{children:[e.jsx(u.Button,{variant:"outline",size:"xs",onClick:_,disabled:z,children:"Cancel"}),e.jsx(u.Button,{size:"xs",onClick:O,disabled:$,children:z?e.jsxs(e.Fragment,{children:[e.jsx(u.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})}function Y(a={}){const{authToken:c,tokenProps:t}=l.useSemaphorContext(),m=u.useDashboardStore(r=>r.actions.applyResolvedValueFormatPreferences),s=a.enabled??!0,i=(c==null?void 0:c.accessToken)??null,h=(t==null?void 0:t.apiServiceUrl)??null,g=o.useRef(i);g.current=i;const[S,b]=o.useState(null),[C,f]=o.useState(!1),[j,T]=o.useState(!1),[x,w]=o.useState(!1),[P,v]=o.useState(null);o.useEffect(()=>{b(null),v(null),f(!1),T(!1),w(!1)},[i]);const N=o.useCallback(async r=>{const n=L.parseValueFormatPreferencesResponse(await r.json());if(!n.ok)throw new Error("Value format preferences response is invalid");return n.value},[]),k=o.useCallback(async(r,n)=>{if(!i||!h)throw new Error("Not authenticated");const y=await fetch(`${h}/v1/user-preferences/value-format`,{method:r,headers:{Authorization:`Bearer ${i}`,...n?{"Content-Type":"application/json"}:{}},body:n?JSON.stringify(n):void 0});if(!y.ok){const D=await y.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}return N(y)},[i,h,N]),E=o.useCallback(async()=>{if(!s||!i||!h)return;const r=i;f(!0),v(null);try{const n=await k("GET");g.current===r&&b(n)}catch(n){g.current===r&&v(n instanceof Error?n.message:"Unknown error")}finally{g.current===r&&f(!1)}},[i,h,s,k]);o.useEffect(()=>{s&&E()},[s,E]);const A=o.useCallback(async r=>{const n=i;T(!0),v(null);try{const y=await k("PATCH",r);return g.current!==n?!1:(b(y),m(y.resolved,y.sources),!0)}catch(y){return g.current===n&&v(y instanceof Error?y.message:"Unknown error"),!1}finally{g.current===n&&T(!1)}},[i,m,k]),p=o.useCallback(async()=>{const r=i;w(!0),v(null);try{const n=await k("DELETE");return g.current!==r?!1:(b(n),m(n.resolved,n.sources),!0)}catch(n){return g.current===r&&v(n instanceof Error?n.message:"Unknown error"),!1}finally{g.current===r&&w(!1)}},[i,m,k]);return{preferences:S,isLoading:C,isSaving:j,isClearing:x,error:P,updatePreferences:A,clearPreferences:p,refetch:E}}const I=["locale","dateStyle","dateTime.dateStyle","dateTime.timeStyle","defaultCurrency"];function q(a,c){var t,m;switch(c){case"locale":return a==null?void 0:a.locale;case"dateStyle":return a==null?void 0:a.dateStyle;case"dateTime.dateStyle":return(t=a==null?void 0:a.dateTime)==null?void 0:t.dateStyle;case"dateTime.timeStyle":return(m=a==null?void 0:a.dateTime)==null?void 0:m.timeStyle;case"defaultCurrency":return a==null?void 0:a.defaultCurrency}}function Z(a){var m,s;const c=(m=a==null?void 0:a.dateTime)==null?void 0:m.dateStyle,t=(s=a==null?void 0:a.dateTime)==null?void 0:s.timeStyle;return{locale:a==null?void 0:a.locale,dateStyle:a==null?void 0:a.dateStyle,dateTime:c===void 0&&t===void 0?void 0:{dateStyle:c,timeStyle:t},defaultCurrency:a==null?void 0:a.defaultCurrency}}function Q({active:a,onClose:c}){var g,S,b,C,f,j,T;const{preferences:t,isLoading:m,isSaving:s,updatePreferences:i}=Y({enabled:a});if(!a)return null;if(!t)return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx("div",{className:"flex min-h-36 items-center justify-center text-[12px] text-muted-foreground",children:m?"Loading preferences…":"Preferences unavailable."})}),e.jsxs(l.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(u.Button,{variant:"ghost",size:"xs",disabled:!0,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(u.Button,{variant:"outline",size:"xs",onClick:c,children:"Cancel"}),e.jsx(u.Button,{size:"xs",disabled:!0,children:"Save"})]})]})]});const h=[((g=t.stored)==null?void 0:g.locale)??"",((S=t.stored)==null?void 0:S.dateStyle)??"",((C=(b=t.stored)==null?void 0:b.dateTime)==null?void 0:C.dateStyle)??"",((j=(f=t.stored)==null?void 0:f.dateTime)==null?void 0:j.timeStyle)??"",((T=t.stored)==null?void 0:T.defaultCurrency)??""].join(":");return e.jsx(X,{preferences:t,isSaving:s,updatePreferences:i,onClose:c},h)}function X({preferences:a,isSaving:c,updatePreferences:t,onClose:m}){var b,C;const[s,i]=o.useState(()=>Z(a.stored)),h=(s.locale===void 0||L.canonicalizeSupportedLocale(s.locale)!==void 0)&&(s.defaultCurrency===void 0||L.canonicalizeSupportedCurrencyCode(s.defaultCurrency)!==void 0)&&(s.dateStyle===void 0||["short","medium","long"].includes(s.dateStyle))&&(((b=s.dateTime)==null?void 0:b.dateStyle)===void 0||["short","medium","long"].includes(s.dateTime.dateStyle))&&(((C=s.dateTime)==null?void 0:C.timeStyle)===void 0||["short","medium","long"].includes(s.dateTime.timeStyle)),g=async()=>{const f={...s.locale!==void 0?{locale:s.locale}:{},...s.dateStyle!==void 0?{dateStyle:s.dateStyle}:{},...s.dateTime?{dateTime:{...s.dateTime}}:{},...s.defaultCurrency!==void 0?{defaultCurrency:s.defaultCurrency}:{}},j=I.filter(w=>q(s,w)===void 0&&q(a.stored,w)!==void 0),T={...Object.keys(f).length>0?{set:f}:{},...j.length>0?{clear:j}:{}};(Object.keys(T).length===0?!0:await t(T))?(l.ue.success("Display format preferences saved."),m()):l.ue.error("Failed to save preferences. Please try again.")},S=async()=>{await t({clear:[...I]})?(l.ue.success("Display format preferences reset."),m()):l.ue.error("Failed to reset display format preferences. Please try again.")};return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx(l.DisplayFormatPreferencesFields,{value:s,inherited:a.inherited,inheritedSources:a.inheritedSources,onChange:i,disabled:c})}),e.jsxs(l.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(u.Button,{variant:"ghost",size:"xs",onClick:S,disabled:c||a.stored===null,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(u.Button,{variant:"outline",size:"xs",onClick:m,disabled:c,children:"Cancel"}),e.jsx(u.Button,{size:"xs",onClick:g,disabled:c||!h,children:c?e.jsxs(e.Fragment,{children:[e.jsx(u.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})]})}function ee({open:a,onOpenChange:c}){const[t,m]=o.useState("display"),s=()=>c(!1);return e.jsx(l.Dialog,{open:a,onOpenChange:c,children:e.jsxs(l.DialogContent,{className:"rounded-control border-border/60 sm:max-w-[440px] sm:rounded-control",children:[e.jsxs(l.DialogHeader,{children:[e.jsx(l.DialogTitle,{className:"text-[15px]",children:"Report preferences"}),e.jsx(l.DialogDescription,{className:"text-[13px] leading-5",children:"Set how values and Calendar periods appear for you."})]}),e.jsxs(u.Tabs,{value:t,onValueChange:m,children:[e.jsxs(u.TabsList,{variant:"underline",className:"w-full justify-start",children:[e.jsx(u.TabsTrigger,{value:"display",children:"Display formats"}),e.jsx(u.TabsTrigger,{value:"calendar",children:"Calendar"})]}),e.jsx(u.TabsContent,{value:"display",children:e.jsx(Q,{active:a&&t==="display",onClose:s})}),e.jsx(u.TabsContent,{value:"calendar",children:e.jsx(J,{active:a&&t==="calendar",onClose:s})})]})]})})}exports.ReportPreferencesDialog=ee;
@@ -1,6 +1,6 @@
1
1
  import { jsxs as o, Fragment as j, jsx as t } from "react/jsx-runtime";
2
2
  import oe, { useState as S, useRef as X, useEffect as U, useCallback as E, useMemo as _ } from "react";
3
- import { ay as ee, az as ce, aA as B, aB as $, aC as de, g as ue, h as me, i as fe, j as he, k as M, l as H, aD as ve, aE as V, aF as z, b as ye, aG as pe, aH as ge, aI as Se, aJ as be, aK as Te } from "./index-D9rSByc1.js";
3
+ import { ay as ee, az as ce, aA as B, aB as $, aC as de, g as ue, h as me, i as fe, j as he, k as M, l as H, aD as ve, aE as V, aF as z, b as ye, aG as pe, aH as ge, aI as Se, aJ as be, aK as Te } from "./index-E4GmfQa7.js";
4
4
  import { u as ae, c as F, O as W, P as we, a as Ce, B as D, b as ke, d as q, L as te, T as xe, F as Ne, G, I as K } from "./switch-CZt_oBQ2.js";
5
5
  import { a as Pe } from "./report-runtime-context-B_pAmqxl.js";
6
6
  import "./x-CXDkqdur.js";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../chunks/index-BtTPcpTa.cjs"),e=require("../chunks/common-types-BCSbPclk.cjs");exports.Dashboard=o.Dashboard;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../chunks/index-BMBjEw3O.cjs"),e=require("../chunks/common-types-BCSbPclk.cjs");exports.Dashboard=o.Dashboard;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;
@@ -1,4 +1,4 @@
1
- import { D as o } from "../chunks/index-D9rSByc1.js";
1
+ import { D as o } from "../chunks/index-E4GmfQa7.js";
2
2
  import { C as s, E as C } from "../chunks/common-types-D3r4PILe.js";
3
3
  export {
4
4
  s as CONTROL_CARD_DEFAULT_VALUE,
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("react"),An=require("react-dom/client"),k=require("../chunks/index-BtTPcpTa.cjs"),w=require("../chunks/switch-EWWOPEdH.cjs"),Ze=require("../data-app-builder-browser-runtime/index.cjs"),te=require("../chunks/x-B6ghREd2.cjs"),Cn=require("../chunks/save-3dYRmehL.cjs"),Rn=require("../chunks/mouse-pointer-2-DX4A_XZw.cjs"),tt=require("../chunks/search-BqqhaMx9.cjs");function Tr(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const d=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(s,a,d.get?d:{enumerable:!0,get:()=>t[a]})}}return s.default=t,Object.freeze(s)}const Bn=Tr(p),Dn=Tr(An);/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("react"),An=require("react-dom/client"),k=require("../chunks/index-BMBjEw3O.cjs"),w=require("../chunks/switch-EWWOPEdH.cjs"),Ze=require("../data-app-builder-browser-runtime/index.cjs"),te=require("../chunks/x-B6ghREd2.cjs"),Cn=require("../chunks/save-3dYRmehL.cjs"),Rn=require("../chunks/mouse-pointer-2-DX4A_XZw.cjs"),tt=require("../chunks/search-BqqhaMx9.cjs");function Tr(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const d=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(s,a,d.get?d:{enumerable:!0,get:()=>t[a]})}}return s.default=t,Object.freeze(s)}const Bn=Tr(p),Dn=Tr(An);/**
2
2
  * @license lucide-react v0.453.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -2,7 +2,7 @@ import { jsx as r, jsxs as c, Fragment as re } from "react/jsx-runtime";
2
2
  import * as Zn from "react";
3
3
  import { useContext as qn, useState as x, useRef as oe, useMemo as je, useEffect as W, useCallback as Ot } from "react";
4
4
  import * as Xn from "react-dom/client";
5
- import { aL as ea, aM as ta, aN as Ir, aO as jr, aP as zr, aQ as ra, aR as Wr, aS as Hr, aT as Jr, aU as Vr, aV as _r, aW as Ur, aX as Gr, aY as na, aZ as aa, a_ as oa, a$ as Ht, b0 as on, R as Kr, b1 as sa, b2 as Vt, b3 as sn, b4 as ia, b5 as la } from "../chunks/index-D9rSByc1.js";
5
+ import { aL as ea, aM as ta, aN as Ir, aO as jr, aP as zr, aQ as ra, aR as Wr, aS as Hr, aT as Jr, aU as Vr, aV as _r, aW as Ur, aX as Gr, aY as na, aZ as aa, a_ as oa, a$ as Ht, b0 as on, R as Kr, b1 as sa, b2 as Vt, b3 as sn, b4 as ia, b5 as la } from "../chunks/index-E4GmfQa7.js";
6
6
  import { B as H, P as it, a as lt, b as dt, _ as da, $ as ca, a0 as ua, a1 as pa, a2 as ha, L as me, R as ma, d as _t } from "../chunks/switch-CZt_oBQ2.js";
7
7
  import { loadSemaphorBrowserRuntime as ot } from "../data-app-builder-browser-runtime/index.js";
8
8
  import { c as Ve, X as He } from "../chunks/x-CXDkqdur.js";
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("../chunks/index-ByQgqT9d.cjs"),i=require("../chunks/pivot-result-lifecycle-D_bRCqaB.cjs"),n=require("../chunks/pivot-header-presentation-8Ra1RfHg.cjs"),c=require("../pdf-export-policy/index.cjs"),T=require("../chunks/validators-DqIM0B3C.cjs"),p=require("../chunks/metric-comparison-x0lipytf.cjs"),f=require("../chunks/pivot-result-identity-BVnhG2rR.cjs"),P=require("../chunks/raw-temporal-contract-vnNwLy9R.cjs");function V(r,e,o,t){const a=r instanceof Date?r.toISOString():String(r),s=(t==null?void 0:t.browserTimezone)||o,l=(t==null?void 0:t.isSqlCard)??!1;if(e!=null&&e.useRelativeTime)return n.formatRelativeTime(a,(e==null?void 0:e.sourceTimezone)||"auto");const m=e!=null&&e.useCustomFormat&&(e!=null&&e.customFormat)?e.customFormat:(e==null?void 0:e.format)||"MM/dd/yyyy";return n.formatDate(a,m,e!=null&&e.timezone&&(e==null?void 0:e.timezone)!=="auto"?e.timezone:l?s:o,(e==null?void 0:e.sourceTimezone)||"auto")}function S(r,e,o){if(r==null)return"";if(!o.useFormattedValues||!e)return String(r);switch(e.type){case"number":return typeof r=="number"?i.formatNumberWithColumnSettings(r,e.numberFormat,o.locale):String(r);case"date":return V(r,e.dateFormat,o.timezone,{browserTimezone:o.browserTimezone,isSqlCard:o.isSqlCard});case"progress":return typeof r=="number"?`${r}%`:String(r);case"badge":case"link":case"text":case"none":default:return String(r)}}function d(r,e){return e.visibleColumns.map(o=>{const t=r[o],a=e.columnSettings[o];return S(t,a,{useFormattedValues:e.useFormattedValues,timezone:e.timezone,locale:e.locale})})}function h(r,e){const o=[];e.includeHeaders&&o.push(n.arrayToCSVRow(e.visibleColumns,e.delimiter));for(const t of r){const a=d(t,e);o.push(a.map(s=>n.escapeCSVValue(s,e.delimiter)).join(e.delimiter))}return o}function M(r,e,o=`
2
- `){return h(r,e).join(o)}function y(r,e,o){for(const t of r){if(t.level<o){e[t.level].push(t.name);for(let a=1;a<t.colspan;a++)e[t.level].push("")}t.children?y(t.children,e,o):t.columnKey&&e[o].push(t.name)}}function g(r){const e=r.pivotByColumns.length,o=r.groupByColumns.length,t=Array.from({length:e+1},()=>[]);for(let a=0;a<e;a++)t[a].push(...Array(o).fill(""));if(t[e].push(...r.groupByColumns.map(a=>a.label||a.name)),y(r.columnHeadersTree,t,e),r.showRowTotals){for(let a=0;a<e;a++)t[a].push("");t[e].push("Total")}return t}function F(r,e,o){if(r==null)return"";if(!o.useFormattedValues)return String(r);const t=o.columnSettings[e];return typeof r=="number"&&(t==null?void 0:t.type)==="number"?i.formatNumberWithColumnSettings(r,t.numberFormat,o.locale):typeof r=="number"?r.toLocaleString(o.locale):String(r)}function A(r,e,o){const t=[];r.fieldValues.forEach((s,l)=>{r.isSubtotal&&l===0?t.push(`${s} Total`):r.isSubtotal?t.push(""):t.push(String(s??""))});let a=0;return e.columnHeaders.forEach(s=>{var u;const l=(u=r.cells[s])==null?void 0:u.value,m=F(l,s,o);t.push(m),e.showRowTotals&&typeof l=="number"&&(a+=l)}),e.showRowTotals&&t.push(a.toLocaleString(o.locale)),t}function N(r,e,o){const t=[];if(o.includeHeaders){const a=g(e);for(const s of a)t.push(n.arrayToCSVRow(s,o.delimiter))}for(const a of r){const s=A(a,e,o);t.push(s.map(l=>n.escapeCSVValue(l,o.delimiter)).join(o.delimiter))}return t}function C(r){if(r===null||typeof r!="object"||Array.isArray(r))return!1;const e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}function v(r,e,o){const t=new Set(e),a=Object.keys(r).find(s=>!t.has(s));if(a)throw new Error(`${o} contains unknown property "${a}"`)}function k(r,e="tableTotalsRequest"){if(!C(r))throw new Error(`${e} must be an object`);if(v(r,["source","columns"],e),r.source!=="documentFlatTable")throw new Error(`${e}.source must be documentFlatTable`);if(!Array.isArray(r.columns)||r.columns.length===0)throw new Error(`${e}.columns must be a non-empty array`);let o=0;const t=r.columns.map((l,m)=>{const u=`${e}.columns.${m}`;if(!C(l))throw new Error(`${u} must be an object`);v(l,["fieldId","role","behavior","metricAlias","label"],u);const w=typeof l.fieldId=="string"?l.fieldId.trim():"";if(!w)throw new Error(`${u}.fieldId must be a non-empty string`);if(l.role!=="detail"&&l.role!=="groupby"&&l.role!=="metric")throw new Error(`${u}.role is invalid`);const E=l.role;if(l.behavior!=="sum"&&l.behavior!=="avg"&&l.behavior!=="count"&&l.behavior!=="label")throw new Error(`${u}.behavior is invalid`);const R=l.behavior,b=typeof l.metricAlias=="string"?l.metricAlias.trim():void 0;if(l.metricAlias!==void 0&&!b)throw new Error(`${u}.metricAlias must be a non-empty string`);if(b&&E!=="metric")throw new Error(`${u}.metricAlias requires metric role`);if(R==="label"){if(o+=1,E==="metric")throw new Error(`${u}.behavior label requires a non-metric role`)}else if(E!=="metric")throw new Error(`${u}.${R} requires metric role`);if(l.label!==void 0&&typeof l.label!="string")throw new Error(`${u}.label must be a string`);return{fieldId:w,role:E,behavior:R,...b?{metricAlias:b}:{},...l.label!==void 0?{label:l.label}:{}}}),a=new Map,s=new Set;for(const l of t){if(l.metricAlias){if(s.has(l.metricAlias))throw new Error(`${e}.columns duplicates metricAlias "${l.metricAlias}"`);s.add(l.metricAlias)}const m=a.get(l.fieldId)??[];m.push(l),a.set(l.fieldId,m)}for(const[l,m]of a)if(m.length!==1){for(const u of m)if(u.role!=="metric"||!u.metricAlias)throw new Error(`${e}.columns duplicates fieldId "${l}" without distinct metricAlias values`)}if(o>1)throw new Error(`${e}.columns may contain at most one label`);return{source:"documentFlatTable",columns:t}}function O(r,e="tableTotalsByColumnId"){if(!C(r))throw new Error(`${e} must be an object`);const o={};for(const[t,a]of Object.entries(r)){if(!t.trim())throw new Error(`${e} contains an empty column id`);if(a!==null&&typeof a!="string"&&(typeof a!="number"||!Number.isFinite(a)))throw new Error(`${e}.${t} must be a string, finite number, or null`);o[t]=a}if(Object.keys(o).length===0)throw new Error(`${e} must not be empty`);return o}function B(r){if(typeof r=="number")return Number.isFinite(r)?r:null;if(!r.trim())return null;const e=Number(r);return Number.isFinite(e)?e:null}function I(r){const e=r.visibleColumns.map(o=>{const a=Object.prototype.hasOwnProperty.call(r.totalsByColumnId,o)?r.totalsByColumnId[o]:o===r.labelColumnKey?"Total":null;if(a===null)return"";if(!r.useFormattedValues)return String(a);const s=i.findResolvedNumericFormat({snapshot:r.snapshot,scope:r.scope,target:{kind:"column",columnKey:o}}),l=s?B(a):null;return s&&l!==null?i.formatNumericCanonical(l,s):String(a)});return`${n.arrayToCSVRow(e,r.delimiter)}
3
- `}exports.isNumericCanonicalFormat=_.isNumericCanonicalFormat;exports.MissingResolvedRawTemporalFormatError=i.MissingResolvedRawTemporalFormatError;exports.PivotResultLifecycleError=i.PivotResultLifecycleError;exports.PresentationExecutionSnapshotError=i.PresentationExecutionSnapshotError;exports.RawTemporalFormatContractError=i.RawTemporalFormatContractError;exports.assertRawTemporalChunkClassificationAgreement=i.assertRawTemporalChunkClassificationAgreement;exports.classifyDeclaredSqlTemporalColumn=i.classifyDeclaredSqlTemporalColumn;exports.createCanonicalPivotResultTransport=i.createCanonicalPivotResultTransport;exports.createPresentationExecutionSnapshot=i.createPresentationExecutionSnapshot;exports.createRawTemporalChunkClassificationEvidence=i.createRawTemporalChunkClassificationEvidence;exports.deriveMetricInstanceAliasExpectations=i.deriveMetricInstanceAliasExpectations;exports.derivePivotResultContractExpectations=i.derivePivotResultContractExpectations;exports.findResolvedNumericFormat=i.findResolvedNumericFormat;exports.findResolvedRawTemporalFormat=i.findResolvedRawTemporalFormat;exports.findResolvedTemporalBucketFormat=i.findResolvedTemporalBucketFormat;exports.formatCurrency=i.formatCurrency;exports.formatNumber=i.formatNumber;exports.formatNumberCustom=i.formatNumberCustom;exports.formatNumberWithColumnSettings=i.formatNumberWithColumnSettings;exports.formatNumericCanonical=i.formatNumericCanonical;exports.formatPercent=i.formatPercent;exports.formatRawTemporalValue=i.formatRawTemporalValue;exports.formatScientific=i.formatScientific;exports.parseCanonicalPivotResultTransport=i.parseCanonicalPivotResultTransport;exports.parseNumericCanonicalFormat=i.parseNumericCanonicalFormat;exports.parsePresentationExecutionSnapshot=i.parsePresentationExecutionSnapshot;exports.parsePresentationScope=i.parsePresentationScope;exports.parseRawTemporalChunkClassificationEvidence=i.parseRawTemporalChunkClassificationEvidence;exports.parseResolvedNumericCanonicalFormat=i.parseResolvedNumericCanonicalFormat;exports.parseResolvedPresentationEntries=i.parseResolvedPresentationEntries;exports.parseResolvedRawTemporalFormat=i.parseResolvedRawTemporalFormat;exports.prepareRawTemporalFormatter=i.prepareRawTemporalFormatter;exports.resolveCurrencyFractionDigits=i.resolveCurrencyFractionDigits;exports.resolveNumericPresentation=i.resolveNumericPresentation;exports.resolveRawTemporalFormat=i.resolveRawTemporalFormat;exports.validateCardExportNumericPresentationSnapshot=i.validateCardExportNumericPresentationSnapshot;exports.validateCardExportPresentationSnapshot=i.validateCardExportPresentationSnapshot;exports.validateRawTemporalPattern=i.validateRawTemporalPattern;exports.AGGREGATE_TOTAL_MEMBER_MARKER=n.AGGREGATE_TOTAL_MEMBER_MARKER;exports.DIRECT_CSV_EXPORT_MAX_ROWS=n.DIRECT_CSV_EXPORT_MAX_ROWS;exports.FULL_DATASET_CSV_EXPORT_MAX_ROWS=n.FULL_DATASET_CSV_EXPORT_MAX_ROWS;exports.PivotHeaderPresentationError=n.PivotHeaderPresentationError;exports.arrayToCSV=n.arrayToCSV;exports.arrayToCSVRow=n.arrayToCSVRow;exports.escapeCSVValue=n.escapeCSVValue;exports.formatAggregateGrandTotalLabel=n.formatAggregateGrandTotalLabel;exports.formatAggregateGroupCell=n.formatAggregateGroupCell;exports.formatAggregateGroupRow=n.formatAggregateGroupRow;exports.formatAggregateSubtotalLabel=n.formatAggregateSubtotalLabel;exports.formatDate=n.formatDate;exports.formatDuration=n.formatDuration;exports.formatMetricComparison=n.formatMetricComparison;exports.formatRelativeTime=n.formatRelativeTime;exports.getTimezoneAbbreviation=n.getTimezoneAbbreviation;exports.getTimezoneName=n.getTimezoneName;exports.isAggregateTotalMemberMarker=n.isAggregateTotalMemberMarker;exports.objectsToCSV=n.objectsToCSV;exports.parseWithSourceTimezone=n.parseWithSourceTimezone;exports.presentAggregateGroupRow=n.presentAggregateGroupRow;exports.presentPivotHeader=n.presentPivotHeader;exports.requiresChunkedCsvExport=n.requiresChunkedCsvExport;exports.resolveAggregateTablePresentationContext=n.resolveAggregateTablePresentationContext;exports.resolveTimezone=n.resolveTimezone;exports.shouldPresentAggregateGroupValue=n.shouldPresentAggregateGroupValue;exports.FAST_PDF_POLICY=c.FAST_PDF_POLICY;exports.PDF_SAFETY_LIMIT_EXCEEDED=c.PDF_SAFETY_LIMIT_EXCEEDED;exports.getUtf8ByteLength=c.getUtf8ByteLength;exports.isFastPdfOutputSizeEligible=c.isFastPdfOutputSizeEligible;exports.isFastPdfPageCountEligible=c.isFastPdfPageCountEligible;exports.isFastPdfRequestSizeEligible=c.isFastPdfRequestSizeEligible;exports.isFastPdfRowCountEligible=c.isFastPdfRowCountEligible;exports.SEMAPHOR_GENERATED_COUNT_METRIC_ID=T.SEMAPHOR_GENERATED_COUNT_METRIC_ID;exports.TEMPORAL_BUCKET_PATTERN_TOKENS=T.TEMPORAL_BUCKET_PATTERN_TOKENS;exports.isTemporalBucketPreset=T.isTemporalBucketPreset;exports.resolveApplicableTemporalBucketFormat=T.resolveApplicableTemporalBucketFormat;exports.tokenizeTemporalBucketPattern=T.tokenizeTemporalBucketPattern;exports.validateTemporalBucketFormatApplicability=T.validateTemporalBucketFormatApplicability;exports.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET=p.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET;exports.TemporalBucketContractError=p.TemporalBucketContractError;exports.formatTemporalBucket=p.formatTemporalBucket;exports.parseResolvedTemporalBucketFormat=p.parseResolvedTemporalBucketFormat;exports.parseTemporalBucketValue=p.parseTemporalBucketValue;exports.resolveMetricResultAlias=p.resolveMetricResultAlias;exports.resolveTemporalBucketPresentation=p.resolveTemporalBucketPresentation;exports.PivotResultIdentityError=f.PivotResultIdentityError;exports.isPivotEmptyTupleAllowed=f.isPivotEmptyTupleAllowed;exports.isPivotSubtotalPrefix=f.isPivotSubtotalPrefix;exports.requirePivotHeaderMembers=f.requirePivotHeaderMembers;exports.requirePivotResultColumnIdentities=f.requirePivotResultColumnIdentities;exports.resolveQueryColumnKeyMapEntry=f.resolveQueryColumnKeyMapEntry;exports.resolveUniqueQueryColumnKeyMapEntry=f.resolveUniqueQueryColumnKeyMapEntry;exports.parseRawTemporalValueMetadata=P.parseRawTemporalValueMetadata;exports.validateRawTemporalResultColumn=P.validateRawTemporalResultColumn;exports.buildFlatTableExportTotalsFooter=I;exports.formatCellValue=S;exports.formatPivotDataRow=A;exports.formatPivotTableForCSV=N;exports.formatRowForExport=d;exports.formatTableForCSV=h;exports.generatePivotHeaders=g;exports.generateTableCSV=M;exports.parseFlatTableExportTotalsByColumnId=O;exports.parseFlatTableExportTotalsRequest=k;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("../chunks/index-ByQgqT9d.cjs"),i=require("../chunks/pivot-result-lifecycle-D_bRCqaB.cjs"),n=require("../chunks/pivot-header-presentation-BBM9y_3s.cjs"),c=require("../pdf-export-policy/index.cjs"),f=require("../chunks/validators-DqIM0B3C.cjs"),p=require("../chunks/metric-comparison-x0lipytf.cjs"),T=require("../chunks/pivot-result-identity-BVnhG2rR.cjs"),P=require("../chunks/raw-temporal-contract-vnNwLy9R.cjs");function N(r,e,o,t){const a=r instanceof Date?r.toISOString():String(r),s=(t==null?void 0:t.browserTimezone)||o,l=(t==null?void 0:t.isSqlCard)??!1;if(e!=null&&e.useRelativeTime)return n.formatRelativeTime(a,(e==null?void 0:e.sourceTimezone)||"auto");const m=e!=null&&e.useCustomFormat&&(e!=null&&e.customFormat)?e.customFormat:(e==null?void 0:e.format)||"MM/dd/yyyy";return n.formatDate(a,m,e!=null&&e.timezone&&(e==null?void 0:e.timezone)!=="auto"?e.timezone:l?s:o,(e==null?void 0:e.sourceTimezone)||"auto")}function v(r,e,o){if(r==null)return"";if(!o.useFormattedValues||!e)return String(r);switch(e.type){case"number":return typeof r=="number"?i.formatNumberWithColumnSettings(r,e.numberFormat,o.locale):String(r);case"date":return N(r,e.dateFormat,o.timezone,{browserTimezone:o.browserTimezone,isSqlCard:o.isSqlCard});case"progress":return typeof r=="number"?`${r}%`:String(r);case"badge":case"link":case"text":case"none":default:return String(r)}}function A(r,e){return e.visibleColumns.map(o=>{const t=r[o],a=e.columnSettings[o];return v(t,a,{useFormattedValues:e.useFormattedValues,timezone:e.timezone,locale:e.locale})})}function d(r,e){const o=[];e.includeHeaders&&o.push(n.arrayToCSVRow(e.visibleColumns,e.delimiter));for(const t of r){const a=A(t,e);o.push(a.map(s=>n.escapeCSVValue(s,e.delimiter)).join(e.delimiter))}return o}function V(r,e,o=`
2
+ `){return d(r,e).join(o)}function h(r,e,o){for(const t of r){if(t.level<o){e[t.level].push(t.name);for(let a=1;a<t.colspan;a++)e[t.level].push("")}t.children?h(t.children,e,o):t.columnKey&&e[o].push(t.name)}}function y(r){const e=r.pivotByColumns.length,o=r.groupByColumns.length,t=Array.from({length:e+1},()=>[]);for(let a=0;a<e;a++)t[a].push(...Array(o).fill(""));if(t[e].push(...r.groupByColumns.map(a=>a.label||a.name)),h(r.columnHeadersTree,t,e),r.showRowTotals){for(let a=0;a<e;a++)t[a].push("");t[e].push("Total")}return t}function O(r,e,o){if(r==null)return"";if(!o.useFormattedValues)return String(r);const t=o.columnSettings[e];return typeof r=="number"&&(t==null?void 0:t.type)==="number"?i.formatNumberWithColumnSettings(r,t.numberFormat,o.locale):typeof r=="number"?r.toLocaleString(o.locale):String(r)}function g(r,e,o){const t=[];r.fieldValues.forEach((s,l)=>{r.isSubtotal&&l===0?t.push(`${s} Total`):r.isSubtotal?t.push(""):t.push(String(s??""))});let a=0;return e.columnHeaders.forEach(s=>{var u;const l=(u=r.cells[s])==null?void 0:u.value,m=O(l,s,o);t.push(m),e.showRowTotals&&typeof l=="number"&&(a+=l)}),e.showRowTotals&&t.push(a.toLocaleString(o.locale)),t}function F(r,e,o){const t=[];if(o.includeHeaders){const a=y(e);for(const s of a)t.push(n.arrayToCSVRow(s,o.delimiter))}for(const a of r){const s=g(a,e,o);t.push(s.map(l=>n.escapeCSVValue(l,o.delimiter)).join(o.delimiter))}return t}function C(r){if(r===null||typeof r!="object"||Array.isArray(r))return!1;const e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}function S(r,e,o){const t=new Set(e),a=Object.keys(r).find(s=>!t.has(s));if(a)throw new Error(`${o} contains unknown property "${a}"`)}function M(r,e="tableTotalsRequest"){if(!C(r))throw new Error(`${e} must be an object`);if(S(r,["source","columns"],e),r.source!=="documentFlatTable")throw new Error(`${e}.source must be documentFlatTable`);if(!Array.isArray(r.columns)||r.columns.length===0)throw new Error(`${e}.columns must be a non-empty array`);let o=0;const t=r.columns.map((l,m)=>{const u=`${e}.columns.${m}`;if(!C(l))throw new Error(`${u} must be an object`);S(l,["fieldId","role","behavior","metricAlias","label"],u);const w=typeof l.fieldId=="string"?l.fieldId.trim():"";if(!w)throw new Error(`${u}.fieldId must be a non-empty string`);if(l.role!=="detail"&&l.role!=="groupby"&&l.role!=="metric")throw new Error(`${u}.role is invalid`);const E=l.role;if(l.behavior!=="sum"&&l.behavior!=="avg"&&l.behavior!=="count"&&l.behavior!=="label")throw new Error(`${u}.behavior is invalid`);const R=l.behavior,b=typeof l.metricAlias=="string"?l.metricAlias.trim():void 0;if(l.metricAlias!==void 0&&!b)throw new Error(`${u}.metricAlias must be a non-empty string`);if(b&&E!=="metric")throw new Error(`${u}.metricAlias requires metric role`);if(R==="label"){if(o+=1,E==="metric")throw new Error(`${u}.behavior label requires a non-metric role`)}else if(E!=="metric")throw new Error(`${u}.${R} requires metric role`);if(l.label!==void 0&&typeof l.label!="string")throw new Error(`${u}.label must be a string`);return{fieldId:w,role:E,behavior:R,...b?{metricAlias:b}:{},...l.label!==void 0?{label:l.label}:{}}}),a=new Map,s=new Set;for(const l of t){if(l.metricAlias){if(s.has(l.metricAlias))throw new Error(`${e}.columns duplicates metricAlias "${l.metricAlias}"`);s.add(l.metricAlias)}const m=a.get(l.fieldId)??[];m.push(l),a.set(l.fieldId,m)}for(const[l,m]of a)if(m.length!==1){for(const u of m)if(u.role!=="metric"||!u.metricAlias)throw new Error(`${e}.columns duplicates fieldId "${l}" without distinct metricAlias values`)}if(o>1)throw new Error(`${e}.columns may contain at most one label`);return{source:"documentFlatTable",columns:t}}function I(r,e="tableTotalsByColumnId"){if(!C(r))throw new Error(`${e} must be an object`);const o={};for(const[t,a]of Object.entries(r)){if(!t.trim())throw new Error(`${e} contains an empty column id`);if(a!==null&&typeof a!="string"&&(typeof a!="number"||!Number.isFinite(a)))throw new Error(`${e}.${t} must be a string, finite number, or null`);o[t]=a}if(Object.keys(o).length===0)throw new Error(`${e} must not be empty`);return o}function k(r){if(typeof r=="number")return Number.isFinite(r)?r:null;if(!r.trim())return null;const e=Number(r);return Number.isFinite(e)?e:null}function D(r){const e=r.visibleColumns.map(o=>{const a=Object.prototype.hasOwnProperty.call(r.totalsByColumnId,o)?r.totalsByColumnId[o]:o===r.labelColumnKey?"Total":null;if(a===null)return"";if(!r.useFormattedValues)return String(a);const s=i.findResolvedNumericFormat({snapshot:r.snapshot,scope:r.scope,target:{kind:"column",columnKey:o}}),l=s?k(a):null;return s&&l!==null?i.formatNumericCanonical(l,s):String(a)});return`${n.arrayToCSVRow(e,r.delimiter)}
3
+ `}exports.isNumericCanonicalFormat=_.isNumericCanonicalFormat;exports.MissingResolvedRawTemporalFormatError=i.MissingResolvedRawTemporalFormatError;exports.PivotResultLifecycleError=i.PivotResultLifecycleError;exports.PresentationExecutionSnapshotError=i.PresentationExecutionSnapshotError;exports.RawTemporalFormatContractError=i.RawTemporalFormatContractError;exports.assertRawTemporalChunkClassificationAgreement=i.assertRawTemporalChunkClassificationAgreement;exports.classifyDeclaredSqlTemporalColumn=i.classifyDeclaredSqlTemporalColumn;exports.createCanonicalPivotResultTransport=i.createCanonicalPivotResultTransport;exports.createPresentationExecutionSnapshot=i.createPresentationExecutionSnapshot;exports.createRawTemporalChunkClassificationEvidence=i.createRawTemporalChunkClassificationEvidence;exports.deriveMetricInstanceAliasExpectations=i.deriveMetricInstanceAliasExpectations;exports.derivePivotResultContractExpectations=i.derivePivotResultContractExpectations;exports.findResolvedNumericFormat=i.findResolvedNumericFormat;exports.findResolvedRawTemporalFormat=i.findResolvedRawTemporalFormat;exports.findResolvedTemporalBucketFormat=i.findResolvedTemporalBucketFormat;exports.formatCurrency=i.formatCurrency;exports.formatNumber=i.formatNumber;exports.formatNumberCustom=i.formatNumberCustom;exports.formatNumberWithColumnSettings=i.formatNumberWithColumnSettings;exports.formatNumericCanonical=i.formatNumericCanonical;exports.formatPercent=i.formatPercent;exports.formatRawTemporalValue=i.formatRawTemporalValue;exports.formatScientific=i.formatScientific;exports.parseCanonicalPivotResultTransport=i.parseCanonicalPivotResultTransport;exports.parseNumericCanonicalFormat=i.parseNumericCanonicalFormat;exports.parsePresentationExecutionSnapshot=i.parsePresentationExecutionSnapshot;exports.parsePresentationScope=i.parsePresentationScope;exports.parseRawTemporalChunkClassificationEvidence=i.parseRawTemporalChunkClassificationEvidence;exports.parseResolvedNumericCanonicalFormat=i.parseResolvedNumericCanonicalFormat;exports.parseResolvedPresentationEntries=i.parseResolvedPresentationEntries;exports.parseResolvedRawTemporalFormat=i.parseResolvedRawTemporalFormat;exports.prepareRawTemporalFormatter=i.prepareRawTemporalFormatter;exports.resolveCurrencyFractionDigits=i.resolveCurrencyFractionDigits;exports.resolveNumericPresentation=i.resolveNumericPresentation;exports.resolveRawTemporalFormat=i.resolveRawTemporalFormat;exports.validateCardExportNumericPresentationSnapshot=i.validateCardExportNumericPresentationSnapshot;exports.validateCardExportPresentationSnapshot=i.validateCardExportPresentationSnapshot;exports.validateRawTemporalPattern=i.validateRawTemporalPattern;exports.AGGREGATE_PDF_CONTINUATION_CLASS=n.PDF_GROUP_CONTINUATION_CLASS;exports.AGGREGATE_TOTAL_MEMBER_MARKER=n.AGGREGATE_TOTAL_MEMBER_MARKER;exports.DIRECT_CSV_EXPORT_MAX_ROWS=n.DIRECT_CSV_EXPORT_MAX_ROWS;exports.FULL_DATASET_CSV_EXPORT_MAX_ROWS=n.FULL_DATASET_CSV_EXPORT_MAX_ROWS;exports.PDF_GROUP_CONTINUATION_CLASS=n.PDF_GROUP_CONTINUATION_CLASS;exports.PivotHeaderPresentationError=n.PivotHeaderPresentationError;exports.arrayToCSV=n.arrayToCSV;exports.arrayToCSVRow=n.arrayToCSVRow;exports.escapeCSVValue=n.escapeCSVValue;exports.formatAggregateGrandTotalLabel=n.formatAggregateGrandTotalLabel;exports.formatAggregateGroupCell=n.formatAggregateGroupCell;exports.formatAggregateGroupRow=n.formatAggregateGroupRow;exports.formatAggregateSubtotalLabel=n.formatAggregateSubtotalLabel;exports.formatDate=n.formatDate;exports.formatDuration=n.formatDuration;exports.formatMetricComparison=n.formatMetricComparison;exports.formatRelativeTime=n.formatRelativeTime;exports.getTimezoneAbbreviation=n.getTimezoneAbbreviation;exports.getTimezoneName=n.getTimezoneName;exports.isAggregateTotalMemberMarker=n.isAggregateTotalMemberMarker;exports.objectsToCSV=n.objectsToCSV;exports.parseWithSourceTimezone=n.parseWithSourceTimezone;exports.presentAggregateGroupRow=n.presentAggregateGroupRow;exports.presentPivotHeader=n.presentPivotHeader;exports.requiresChunkedCsvExport=n.requiresChunkedCsvExport;exports.resolveAggregateTablePresentationContext=n.resolveAggregateTablePresentationContext;exports.resolveTimezone=n.resolveTimezone;exports.shouldPresentAggregateGroupValue=n.shouldPresentAggregateGroupValue;exports.FAST_PDF_POLICY=c.FAST_PDF_POLICY;exports.PDF_SAFETY_LIMIT_EXCEEDED=c.PDF_SAFETY_LIMIT_EXCEEDED;exports.getUtf8ByteLength=c.getUtf8ByteLength;exports.isFastPdfOutputSizeEligible=c.isFastPdfOutputSizeEligible;exports.isFastPdfPageCountEligible=c.isFastPdfPageCountEligible;exports.isFastPdfRequestSizeEligible=c.isFastPdfRequestSizeEligible;exports.isFastPdfRowCountEligible=c.isFastPdfRowCountEligible;exports.SEMAPHOR_GENERATED_COUNT_METRIC_ID=f.SEMAPHOR_GENERATED_COUNT_METRIC_ID;exports.TEMPORAL_BUCKET_PATTERN_TOKENS=f.TEMPORAL_BUCKET_PATTERN_TOKENS;exports.isTemporalBucketPreset=f.isTemporalBucketPreset;exports.resolveApplicableTemporalBucketFormat=f.resolveApplicableTemporalBucketFormat;exports.tokenizeTemporalBucketPattern=f.tokenizeTemporalBucketPattern;exports.validateTemporalBucketFormatApplicability=f.validateTemporalBucketFormatApplicability;exports.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET=p.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET;exports.TemporalBucketContractError=p.TemporalBucketContractError;exports.formatTemporalBucket=p.formatTemporalBucket;exports.parseResolvedTemporalBucketFormat=p.parseResolvedTemporalBucketFormat;exports.parseTemporalBucketValue=p.parseTemporalBucketValue;exports.resolveMetricResultAlias=p.resolveMetricResultAlias;exports.resolveTemporalBucketPresentation=p.resolveTemporalBucketPresentation;exports.PivotResultIdentityError=T.PivotResultIdentityError;exports.isPivotEmptyTupleAllowed=T.isPivotEmptyTupleAllowed;exports.isPivotSubtotalPrefix=T.isPivotSubtotalPrefix;exports.requirePivotHeaderMembers=T.requirePivotHeaderMembers;exports.requirePivotResultColumnIdentities=T.requirePivotResultColumnIdentities;exports.resolveQueryColumnKeyMapEntry=T.resolveQueryColumnKeyMapEntry;exports.resolveUniqueQueryColumnKeyMapEntry=T.resolveUniqueQueryColumnKeyMapEntry;exports.parseRawTemporalValueMetadata=P.parseRawTemporalValueMetadata;exports.validateRawTemporalResultColumn=P.validateRawTemporalResultColumn;exports.buildFlatTableExportTotalsFooter=D;exports.formatCellValue=v;exports.formatPivotDataRow=g;exports.formatPivotTableForCSV=F;exports.formatRowForExport=A;exports.formatTableForCSV=d;exports.generatePivotHeaders=y;exports.generateTableCSV=V;exports.parseFlatTableExportTotalsByColumnId=I;exports.parseFlatTableExportTotalsRequest=M;