react-semaphor 0.1.510 → 0.1.512

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 (35) hide show
  1. package/dist/brand-studio/index.cjs +1 -1
  2. package/dist/brand-studio/index.js +1 -1
  3. package/dist/chunks/{dashboard-briefing-launcher-CLZFm7_M.js → dashboard-briefing-launcher-CKOSxJJy.js} +103 -103
  4. package/dist/chunks/{dashboard-briefing-launcher-CAHFThZ6.cjs → dashboard-briefing-launcher-Dna1RtyP.cjs} +1 -1
  5. package/dist/chunks/{dashboard-controls-Yxsu_3w-.cjs → dashboard-controls-9H6PxWNh.cjs} +1 -1
  6. package/dist/chunks/{dashboard-controls-Cq0yJp7k.js → dashboard-controls-BqePoOt8.js} +130 -130
  7. package/dist/chunks/{dashboard-json-B2v70qeb.js → dashboard-json-BJJ1cddf.js} +2 -2
  8. package/dist/chunks/{dashboard-json-Czr84uhZ.cjs → dashboard-json-BwwJoZdd.cjs} +1 -1
  9. package/dist/chunks/{edit-dashboard-visual-BLWXCutZ.js → edit-dashboard-visual-Db2mRA_9.js} +5045 -5038
  10. package/dist/chunks/edit-dashboard-visual-cJdvfkou.cjs +172 -0
  11. package/dist/chunks/{editor-action-buttons-DwMSyAJY.cjs → editor-action-buttons-CKS-8x2Y.cjs} +1 -1
  12. package/dist/chunks/{editor-action-buttons-BiUk_CQn.js → editor-action-buttons-ktNQjwNQ.js} +27 -27
  13. package/dist/chunks/index-CdlFHeq9.cjs +1419 -0
  14. package/dist/chunks/{index-CTFwTeBb.js → index-SVO291wS.js} +36882 -37006
  15. package/dist/chunks/{report-preferences-dialog-CEja_Mat.js → report-preferences-dialog-CBZBmpxZ.js} +7 -7
  16. package/dist/chunks/{report-preferences-dialog-C1LOgCAH.cjs → report-preferences-dialog-DserKhuQ.cjs} +1 -1
  17. package/dist/chunks/{switch-BUW-Ky0G.cjs → switch-BkcJCTS7.cjs} +14 -14
  18. package/dist/chunks/{switch-MB0NuLq-.js → switch-CrstROAR.js} +144 -144
  19. package/dist/dashboard/index.cjs +1 -1
  20. package/dist/dashboard/index.js +1 -1
  21. package/dist/data-app-builder/index.cjs +1 -1
  22. package/dist/data-app-builder/index.js +50 -50
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.js +216 -234
  25. package/dist/surfboard/index.cjs +1 -1
  26. package/dist/surfboard/index.js +2 -2
  27. package/dist/types/components/dashboard/dashboard-visual-error-state.d.ts +7 -1
  28. package/dist/types/components/error-fallbacks/fallback.d.ts +23 -11
  29. package/dist/types/components/error-fallbacks/render-reset-error-boundary.d.ts +33 -0
  30. package/dist/types/components/visual/data-table/hooks/use-data-table-logic.d.ts +5 -0
  31. package/dist/types/lib/dashboard/open-card-in-visual-editor.d.ts +15 -0
  32. package/dist/types/lib/dashboard-pagination/dashboard-card-pagination.d.ts +8 -1
  33. package/package.json +1 -1
  34. package/dist/chunks/edit-dashboard-visual-C8ni6cKY.cjs +0 -172
  35. package/dist/chunks/index-BriWG9wG.cjs +0 -1420
@@ -1,7 +1,7 @@
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, b as ye, aF as pe, aG as ge, aH as Se, aI as be, aJ as Te } from "./index-CTFwTeBb.js";
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, a4 as z, T as xe, F as Ne, G, I as J } from "./switch-MB0NuLq-.js";
3
+ import { az as ee, aA as ce, aB as B, aC as $, aD as de, g as ue, h as me, i as fe, j as he, k as M, l as H, aE as ve, aF as V, b as ye, aG as pe, aH as ge, aI as Se, aJ as be, aK as Te } from "./index-SVO291wS.js";
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, a4 as z, T as xe, F as Ne, G, I as K } from "./switch-CrstROAR.js";
5
5
  import { a as Pe } from "./report-runtime-context-DWvUf1HT.js";
6
6
  import "./x-CXDkqdur.js";
7
7
  import "./card-config-utils-Bq1enstT.js";
@@ -143,7 +143,7 @@ const I = [
143
143
  { value: 0, label: "Sunday" },
144
144
  { value: 1, label: "Monday" },
145
145
  { value: 6, label: "Saturday" }
146
- ], K = "text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";
146
+ ], J = "text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";
147
147
  function Le() {
148
148
  try {
149
149
  const e = Intl;
@@ -307,7 +307,7 @@ function je({
307
307
  ),
308
308
  children: [
309
309
  /* @__PURE__ */ o("div", { className: "space-y-1.5", children: [
310
- /* @__PURE__ */ t(W, { className: K, children: "Timezone" }),
310
+ /* @__PURE__ */ t(W, { className: J, children: "Timezone" }),
311
311
  /* @__PURE__ */ o(
312
312
  we,
313
313
  {
@@ -394,7 +394,7 @@ function je({
394
394
  )
395
395
  ] }),
396
396
  /* @__PURE__ */ o("div", { className: "space-y-1.5", children: [
397
- /* @__PURE__ */ t(W, { className: K, children: "Week starts on" }),
397
+ /* @__PURE__ */ t(W, { className: J, children: "Week starts on" }),
398
398
  /* @__PURE__ */ t(
399
399
  B,
400
400
  {
@@ -701,14 +701,14 @@ function Ye({
701
701
  /* @__PURE__ */ t(G, { value: "display", children: "Display formats" }),
702
702
  /* @__PURE__ */ t(G, { value: "calendar", children: "Calendar" })
703
703
  ] }),
704
- /* @__PURE__ */ t(J, { value: "display", children: /* @__PURE__ */ t(
704
+ /* @__PURE__ */ t(K, { value: "display", children: /* @__PURE__ */ t(
705
705
  Oe,
706
706
  {
707
707
  active: e && a === "display",
708
708
  onClose: r
709
709
  }
710
710
  ) }),
711
- /* @__PURE__ */ t(J, { value: "calendar", children: /* @__PURE__ */ t(
711
+ /* @__PURE__ */ t(K, { value: "calendar", children: /* @__PURE__ */ t(
712
712
  je,
713
713
  {
714
714
  active: e && a === "calendar",
@@ -1 +1 @@
1
- "use strict";const e=require("react/jsx-runtime"),o=require("react"),d=require("./index-BriWG9wG.cjs"),s=require("./switch-BUW-Ky0G.cjs"),V=require("./report-runtime-context-DzvHBPxl.cjs");require("./x-B6ghREd2.cjs");require("./card-config-utils-CMO4_zVs.cjs");require("./validators-DVYAnnX0.cjs");require("./matrix-operation-contract-DoiWTUbT.cjs");const L=require("../value-format-preferences/index.cjs");function G(a={}){const{authToken:c,tokenProps:t}=d.useSemaphorContext(),m=s.useDashboardStore(p=>p.actions.applyResolvedCalendarPreferences),r=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 n=V.parseCalendarPreferencesResponse(await p.json());if(!n.ok)throw new Error("Calendar preferences response is invalid");return n.value},[]),k=o.useCallback(async()=>{if(!r||!i||!h)return;const p=i;S(!0),x(null);try{const n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"GET",headers:{Authorization:`Bearer ${i}`}});if(!n.ok){const y=await n.json().catch(()=>({}));throw new Error(y.error||"Failed to fetch preferences")}const l=await N(n);v.current===p&&P(l)}catch(n){v.current===p&&x(n instanceof Error?n.message:"Unknown error")}finally{v.current===p&&S(!1)}},[i,h,r,N]);o.useEffect(()=>{r&&k()},[r,k]);const E=o.useCallback(async p=>{if(!i||!h)return x("Not authenticated"),!1;const n=i;C(!0),x(null);try{const l=await fetch(`${h}/v1/user-preferences/calendar`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(p)});if(!l.ok){const D=await l.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}const y=await N(l);return v.current!==n?!1:(P(y),m(y.resolved,y.sources),!0)}catch(l){return v.current===n&&x(l instanceof Error?l.message:"Unknown error"),!1}finally{v.current===n&&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 n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"DELETE",headers:{Authorization:`Bearer ${i}`}});if(!n.ok){const y=await n.json().catch(()=>({}));throw new Error(y.error||"Failed to clear preferences")}const l=await N(n);return v.current!==p?!1:(P(l),m(l.resolved,l.sources),!0)}catch(n){return v.current===p&&x(n instanceof Error?n.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:r,isClearing:i,updatePreferences:h,clearPreferences:g}=G({enabled:a}),S=d.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(u=>!F.some(M=>M.value===u)),[A]),n=o.useMemo(()=>U(w),[w]),l=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){s.ue.error("Preferences are still loading. Please try again.");return}f?await g()?(s.ue.success("Now using default settings."),c()):s.ue.error("Failed to save preferences. Please try again."):await h({tz:w,weekStart:v})?(s.ue.success("Preferences saved."),c()):s.ue.error("Failed to save preferences. Please try again.")},_=()=>{c()},z=r||i,$=z||m;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4 py-1",children:[e.jsxs(d.RadioGroup,{value:f?"defaults":"custom",onValueChange:u=>{x(!0),j(u==="defaults")},className:"space-y-0.5",children:[e.jsxs("label",{htmlFor:"mode-defaults",className:s.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(d.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:[l,", week starts ",y]})]})]}),e.jsxs("label",{htmlFor:"mode-custom",className:s.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(d.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:s.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(s.Label,{className:R,children:"Timezone"}),e.jsxs(s.Popover,{open:k,onOpenChange:E,modal:!0,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.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:n}),e.jsx(d.ChevronsUpDown,{className:"ml-2 h-3.5 w-3.5 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-[--radix-popover-trigger-width] p-0",align:"start",children:e.jsxs(d.Command,{className:"overflow-visible",children:[e.jsx(d.CommandInput,{placeholder:"Search timezones…"}),e.jsxs(d.CommandList,{children:[e.jsx(d.CommandEmpty,{children:"No timezone found."}),e.jsx(d.CommandGroup,{heading:"Common",children:F.map(u=>e.jsxs(d.CommandItem,{value:`${u.value} ${u.label}`,onSelect:()=>{x(!0),P(u.value),E(!1)},children:[e.jsx(s.Check,{className:s.cn("h-3.5 w-3.5",w===u.value?"opacity-100":"opacity-0")}),e.jsx("span",{className:"flex-1",children:u.label}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:u.value})]},u.value))}),e.jsx(d.CommandSeparator,{}),e.jsx(d.CommandGroup,{heading:"All timezones",children:p.map(u=>e.jsxs(d.CommandItem,{value:u,onSelect:()=>{x(!0),P(u),E(!1)},children:[e.jsx(s.Check,{className:s.cn("h-3.5 w-3.5",w===u?"opacity-100":"opacity-0")}),u]},u))})]})]})})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:R,children:"Week starts on"}),e.jsx(d.RadioGroup,{value:String(v),onValueChange:u=>{x(!0),N(Number(u))},className:"flex gap-4",disabled:f,children:B.map(u=>e.jsxs("label",{htmlFor:`week-start-${u.value}`,className:s.cn("flex cursor-pointer items-center gap-2 text-[13px]",f&&"cursor-not-allowed"),children:[e.jsx(d.RadioGroupItem,{value:String(u.value),id:`week-start-${u.value}`,disabled:f}),u.label]},u.value))})]})]})]}),e.jsxs(d.DialogFooter,{children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:_,disabled:z,children:"Cancel"}),e.jsx(s.Button,{size:"xs",onClick:O,disabled:$,children:z?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})}function Y(a={}){const{authToken:c,tokenProps:t}=d.useSemaphorContext(),m=s.useDashboardStore(n=>n.actions.applyResolvedValueFormatPreferences),r=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 n=>{const l=L.parseValueFormatPreferencesResponse(await n.json());if(!l.ok)throw new Error("Value format preferences response is invalid");return l.value},[]),k=o.useCallback(async(n,l)=>{if(!i||!h)throw new Error("Not authenticated");const y=await fetch(`${h}/v1/user-preferences/value-format`,{method:n,headers:{Authorization:`Bearer ${i}`,...l?{"Content-Type":"application/json"}:{}},body:l?JSON.stringify(l):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(!r||!i||!h)return;const n=i;f(!0),v(null);try{const l=await k("GET");g.current===n&&b(l)}catch(l){g.current===n&&v(l instanceof Error?l.message:"Unknown error")}finally{g.current===n&&f(!1)}},[i,h,r,k]);o.useEffect(()=>{r&&E()},[r,E]);const A=o.useCallback(async n=>{const l=i;T(!0),v(null);try{const y=await k("PATCH",n);return g.current!==l?!1:(b(y),m(y.resolved,y.sources),!0)}catch(y){return g.current===l&&v(y instanceof Error?y.message:"Unknown error"),!1}finally{g.current===l&&T(!1)}},[i,m,k]),p=o.useCallback(async()=>{const n=i;w(!0),v(null);try{const l=await k("DELETE");return g.current!==n?!1:(b(l),m(l.resolved,l.sources),!0)}catch(l){return g.current===n&&v(l instanceof Error?l.message:"Unknown error"),!1}finally{g.current===n&&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,r;const c=(m=a==null?void 0:a.dateTime)==null?void 0:m.dateStyle,t=(r=a==null?void 0:a.dateTime)==null?void 0:r.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:r,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(d.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(s.Button,{variant:"ghost",size:"xs",disabled:!0,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:c,children:"Cancel"}),e.jsx(s.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:r,updatePreferences:i,onClose:c},h)}function X({preferences:a,isSaving:c,updatePreferences:t,onClose:m}){var b,C;const[r,i]=o.useState(()=>Z(a.stored)),h=(r.locale===void 0||L.canonicalizeSupportedLocale(r.locale)!==void 0)&&(r.defaultCurrency===void 0||L.canonicalizeSupportedCurrencyCode(r.defaultCurrency)!==void 0)&&(r.dateStyle===void 0||["short","medium","long"].includes(r.dateStyle))&&(((b=r.dateTime)==null?void 0:b.dateStyle)===void 0||["short","medium","long"].includes(r.dateTime.dateStyle))&&(((C=r.dateTime)==null?void 0:C.timeStyle)===void 0||["short","medium","long"].includes(r.dateTime.timeStyle)),g=async()=>{const f={...r.locale!==void 0?{locale:r.locale}:{},...r.dateStyle!==void 0?{dateStyle:r.dateStyle}:{},...r.dateTime?{dateTime:{...r.dateTime}}:{},...r.defaultCurrency!==void 0?{defaultCurrency:r.defaultCurrency}:{}},j=I.filter(w=>q(r,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))?(s.ue.success("Display format preferences saved."),m()):s.ue.error("Failed to save preferences. Please try again.")},S=async()=>{await t({clear:[...I]})?(s.ue.success("Display format preferences reset."),m()):s.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(d.DisplayFormatPreferencesFields,{value:r,inherited:a.inherited,inheritedSources:a.inheritedSources,onChange:i,disabled:c})}),e.jsxs(d.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(s.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(s.Button,{variant:"outline",size:"xs",onClick:m,disabled:c,children:"Cancel"}),e.jsx(s.Button,{size:"xs",onClick:g,disabled:c||!h,children:c?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})]})}function ee({open:a,onOpenChange:c}){const[t,m]=o.useState("display"),r=()=>c(!1);return e.jsx(d.Dialog,{open:a,onOpenChange:c,children:e.jsxs(d.DialogContent,{className:"rounded-control border-border/60 sm:max-w-[440px] sm:rounded-control",children:[e.jsxs(d.DialogHeader,{children:[e.jsx(d.DialogTitle,{className:"text-[15px]",children:"Report preferences"}),e.jsx(d.DialogDescription,{className:"text-[13px] leading-5",children:"Set how values and Calendar periods appear for you."})]}),e.jsxs(s.Tabs,{value:t,onValueChange:m,children:[e.jsxs(s.TabsList,{variant:"underline",className:"w-full justify-start",children:[e.jsx(s.TabsTrigger,{value:"display",children:"Display formats"}),e.jsx(s.TabsTrigger,{value:"calendar",children:"Calendar"})]}),e.jsx(s.TabsContent,{value:"display",children:e.jsx(Q,{active:a&&t==="display",onClose:r})}),e.jsx(s.TabsContent,{value:"calendar",children:e.jsx(J,{active:a&&t==="calendar",onClose:r})})]})]})})}exports.ReportPreferencesDialog=ee;
1
+ "use strict";const e=require("react/jsx-runtime"),o=require("react"),d=require("./index-CdlFHeq9.cjs"),s=require("./switch-BkcJCTS7.cjs"),V=require("./report-runtime-context-DzvHBPxl.cjs");require("./x-B6ghREd2.cjs");require("./card-config-utils-CMO4_zVs.cjs");require("./validators-DVYAnnX0.cjs");require("./matrix-operation-contract-DoiWTUbT.cjs");const L=require("../value-format-preferences/index.cjs");function G(a={}){const{authToken:c,tokenProps:t}=d.useSemaphorContext(),m=s.useDashboardStore(p=>p.actions.applyResolvedCalendarPreferences),r=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 n=V.parseCalendarPreferencesResponse(await p.json());if(!n.ok)throw new Error("Calendar preferences response is invalid");return n.value},[]),k=o.useCallback(async()=>{if(!r||!i||!h)return;const p=i;S(!0),x(null);try{const n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"GET",headers:{Authorization:`Bearer ${i}`}});if(!n.ok){const y=await n.json().catch(()=>({}));throw new Error(y.error||"Failed to fetch preferences")}const l=await N(n);v.current===p&&P(l)}catch(n){v.current===p&&x(n instanceof Error?n.message:"Unknown error")}finally{v.current===p&&S(!1)}},[i,h,r,N]);o.useEffect(()=>{r&&k()},[r,k]);const E=o.useCallback(async p=>{if(!i||!h)return x("Not authenticated"),!1;const n=i;C(!0),x(null);try{const l=await fetch(`${h}/v1/user-preferences/calendar`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(p)});if(!l.ok){const D=await l.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}const y=await N(l);return v.current!==n?!1:(P(y),m(y.resolved,y.sources),!0)}catch(l){return v.current===n&&x(l instanceof Error?l.message:"Unknown error"),!1}finally{v.current===n&&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 n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"DELETE",headers:{Authorization:`Bearer ${i}`}});if(!n.ok){const y=await n.json().catch(()=>({}));throw new Error(y.error||"Failed to clear preferences")}const l=await N(n);return v.current!==p?!1:(P(l),m(l.resolved,l.sources),!0)}catch(n){return v.current===p&&x(n instanceof Error?n.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:r,isClearing:i,updatePreferences:h,clearPreferences:g}=G({enabled:a}),S=d.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(u=>!F.some(M=>M.value===u)),[A]),n=o.useMemo(()=>U(w),[w]),l=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){s.ue.error("Preferences are still loading. Please try again.");return}f?await g()?(s.ue.success("Now using default settings."),c()):s.ue.error("Failed to save preferences. Please try again."):await h({tz:w,weekStart:v})?(s.ue.success("Preferences saved."),c()):s.ue.error("Failed to save preferences. Please try again.")},_=()=>{c()},z=r||i,$=z||m;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4 py-1",children:[e.jsxs(d.RadioGroup,{value:f?"defaults":"custom",onValueChange:u=>{x(!0),j(u==="defaults")},className:"space-y-0.5",children:[e.jsxs("label",{htmlFor:"mode-defaults",className:s.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(d.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:[l,", week starts ",y]})]})]}),e.jsxs("label",{htmlFor:"mode-custom",className:s.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(d.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:s.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(s.Label,{className:R,children:"Timezone"}),e.jsxs(s.Popover,{open:k,onOpenChange:E,modal:!0,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.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:n}),e.jsx(d.ChevronsUpDown,{className:"ml-2 h-3.5 w-3.5 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-[--radix-popover-trigger-width] p-0",align:"start",children:e.jsxs(d.Command,{className:"overflow-visible",children:[e.jsx(d.CommandInput,{placeholder:"Search timezones…"}),e.jsxs(d.CommandList,{children:[e.jsx(d.CommandEmpty,{children:"No timezone found."}),e.jsx(d.CommandGroup,{heading:"Common",children:F.map(u=>e.jsxs(d.CommandItem,{value:`${u.value} ${u.label}`,onSelect:()=>{x(!0),P(u.value),E(!1)},children:[e.jsx(s.Check,{className:s.cn("h-3.5 w-3.5",w===u.value?"opacity-100":"opacity-0")}),e.jsx("span",{className:"flex-1",children:u.label}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:u.value})]},u.value))}),e.jsx(d.CommandSeparator,{}),e.jsx(d.CommandGroup,{heading:"All timezones",children:p.map(u=>e.jsxs(d.CommandItem,{value:u,onSelect:()=>{x(!0),P(u),E(!1)},children:[e.jsx(s.Check,{className:s.cn("h-3.5 w-3.5",w===u?"opacity-100":"opacity-0")}),u]},u))})]})]})})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:R,children:"Week starts on"}),e.jsx(d.RadioGroup,{value:String(v),onValueChange:u=>{x(!0),N(Number(u))},className:"flex gap-4",disabled:f,children:B.map(u=>e.jsxs("label",{htmlFor:`week-start-${u.value}`,className:s.cn("flex cursor-pointer items-center gap-2 text-[13px]",f&&"cursor-not-allowed"),children:[e.jsx(d.RadioGroupItem,{value:String(u.value),id:`week-start-${u.value}`,disabled:f}),u.label]},u.value))})]})]})]}),e.jsxs(d.DialogFooter,{children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:_,disabled:z,children:"Cancel"}),e.jsx(s.Button,{size:"xs",onClick:O,disabled:$,children:z?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})}function Y(a={}){const{authToken:c,tokenProps:t}=d.useSemaphorContext(),m=s.useDashboardStore(n=>n.actions.applyResolvedValueFormatPreferences),r=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 n=>{const l=L.parseValueFormatPreferencesResponse(await n.json());if(!l.ok)throw new Error("Value format preferences response is invalid");return l.value},[]),k=o.useCallback(async(n,l)=>{if(!i||!h)throw new Error("Not authenticated");const y=await fetch(`${h}/v1/user-preferences/value-format`,{method:n,headers:{Authorization:`Bearer ${i}`,...l?{"Content-Type":"application/json"}:{}},body:l?JSON.stringify(l):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(!r||!i||!h)return;const n=i;f(!0),v(null);try{const l=await k("GET");g.current===n&&b(l)}catch(l){g.current===n&&v(l instanceof Error?l.message:"Unknown error")}finally{g.current===n&&f(!1)}},[i,h,r,k]);o.useEffect(()=>{r&&E()},[r,E]);const A=o.useCallback(async n=>{const l=i;T(!0),v(null);try{const y=await k("PATCH",n);return g.current!==l?!1:(b(y),m(y.resolved,y.sources),!0)}catch(y){return g.current===l&&v(y instanceof Error?y.message:"Unknown error"),!1}finally{g.current===l&&T(!1)}},[i,m,k]),p=o.useCallback(async()=>{const n=i;w(!0),v(null);try{const l=await k("DELETE");return g.current!==n?!1:(b(l),m(l.resolved,l.sources),!0)}catch(l){return g.current===n&&v(l instanceof Error?l.message:"Unknown error"),!1}finally{g.current===n&&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,r;const c=(m=a==null?void 0:a.dateTime)==null?void 0:m.dateStyle,t=(r=a==null?void 0:a.dateTime)==null?void 0:r.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:r,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(d.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(s.Button,{variant:"ghost",size:"xs",disabled:!0,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:c,children:"Cancel"}),e.jsx(s.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:r,updatePreferences:i,onClose:c},h)}function X({preferences:a,isSaving:c,updatePreferences:t,onClose:m}){var b,C;const[r,i]=o.useState(()=>Z(a.stored)),h=(r.locale===void 0||L.canonicalizeSupportedLocale(r.locale)!==void 0)&&(r.defaultCurrency===void 0||L.canonicalizeSupportedCurrencyCode(r.defaultCurrency)!==void 0)&&(r.dateStyle===void 0||["short","medium","long"].includes(r.dateStyle))&&(((b=r.dateTime)==null?void 0:b.dateStyle)===void 0||["short","medium","long"].includes(r.dateTime.dateStyle))&&(((C=r.dateTime)==null?void 0:C.timeStyle)===void 0||["short","medium","long"].includes(r.dateTime.timeStyle)),g=async()=>{const f={...r.locale!==void 0?{locale:r.locale}:{},...r.dateStyle!==void 0?{dateStyle:r.dateStyle}:{},...r.dateTime?{dateTime:{...r.dateTime}}:{},...r.defaultCurrency!==void 0?{defaultCurrency:r.defaultCurrency}:{}},j=I.filter(w=>q(r,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))?(s.ue.success("Display format preferences saved."),m()):s.ue.error("Failed to save preferences. Please try again.")},S=async()=>{await t({clear:[...I]})?(s.ue.success("Display format preferences reset."),m()):s.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(d.DisplayFormatPreferencesFields,{value:r,inherited:a.inherited,inheritedSources:a.inheritedSources,onChange:i,disabled:c})}),e.jsxs(d.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(s.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(s.Button,{variant:"outline",size:"xs",onClick:m,disabled:c,children:"Cancel"}),e.jsx(s.Button,{size:"xs",onClick:g,disabled:c||!h,children:c?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})]})}function ee({open:a,onOpenChange:c}){const[t,m]=o.useState("display"),r=()=>c(!1);return e.jsx(d.Dialog,{open:a,onOpenChange:c,children:e.jsxs(d.DialogContent,{className:"rounded-control border-border/60 sm:max-w-[440px] sm:rounded-control",children:[e.jsxs(d.DialogHeader,{children:[e.jsx(d.DialogTitle,{className:"text-[15px]",children:"Report preferences"}),e.jsx(d.DialogDescription,{className:"text-[13px] leading-5",children:"Set how values and Calendar periods appear for you."})]}),e.jsxs(s.Tabs,{value:t,onValueChange:m,children:[e.jsxs(s.TabsList,{variant:"underline",className:"w-full justify-start",children:[e.jsx(s.TabsTrigger,{value:"display",children:"Display formats"}),e.jsx(s.TabsTrigger,{value:"calendar",children:"Calendar"})]}),e.jsx(s.TabsContent,{value:"display",children:e.jsx(Q,{active:a&&t==="display",onClose:r})}),e.jsx(s.TabsContent,{value:"calendar",children:e.jsx(J,{active:a&&t==="calendar",onClose:r})})]})]})})}exports.ReportPreferencesDialog=ee;