react-semaphor 0.1.540 → 0.1.541

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 (34) hide show
  1. package/dist/assistant-context/index.js +1 -1
  2. package/dist/briefings/index.js +41 -38
  3. package/dist/chunks/{aggregate-table-row-presentation-BjK9YfMI.js → aggregate-table-row-presentation-B_vQjYR3.js} +319 -302
  4. package/dist/chunks/{assistant-chat-ya7xopaC.js → assistant-chat-D1fDZD6O.js} +3 -3
  5. package/dist/chunks/{dashboard-B6Bithfl.js → dashboard-B6IrON_Q.js} +1 -1
  6. package/dist/chunks/{dashboard-briefing-launcher-DJI-zfEq.js → dashboard-briefing-launcher-DwjFpewq.js} +4 -4
  7. package/dist/chunks/{dashboard-controls-Dh7HqoKy.js → dashboard-controls-C_BI28ME.js} +5 -5
  8. package/dist/chunks/{dashboard-json-BnmlB71h.js → dashboard-json-DDY15Trn.js} +1 -1
  9. package/dist/chunks/{document-dashboard-inputs-BrYYlRVo.js → document-dashboard-inputs-DP_Op5mu.js} +1168 -1166
  10. package/dist/chunks/{edit-dashboard-visual-CydOkSko.js → edit-dashboard-visual-CH2dzWW-.js} +4 -4
  11. package/dist/chunks/{index-CqMiAkay.js → index-DaQlghLY.js} +547 -511
  12. package/dist/chunks/{report-preferences-dialog-neMDolLg.js → report-preferences-dialog-DpNkFfQO.js} +5 -5
  13. package/dist/chunks/{saved-dashboard-context-CCrLpfSQ.js → saved-dashboard-context-CJ2WpoMF.js} +1 -1
  14. package/dist/chunks/{semaphor-ready-indicator--4DWtVBu.js → semaphor-ready-indicator-KT598QJq.js} +29621 -29528
  15. package/dist/chunks/{shelf-drop-preview-context-CpdB5ois.js → shelf-drop-preview-context-BxV3Fl8h.js} +2 -2
  16. package/dist/chunks/{use-create-flow-overlay-state-8g6Zhphh.js → use-create-flow-overlay-state-DdD12SMY.js} +2 -2
  17. package/dist/dashboard/index.js +1 -1
  18. package/dist/dashboard-authoring/index.js +582 -568
  19. package/dist/format-utils/index.js +117 -114
  20. package/dist/index.js +10 -10
  21. package/dist/pdf-export-policy/index.js +20 -10
  22. package/dist/surfboard/index.js +1 -1
  23. package/dist/types/briefings/attachment-outcomes.d.ts +23 -0
  24. package/dist/types/briefings/index.d.ts +1 -0
  25. package/dist/types/lib/hooks/use-dashboard-card.d.ts +2 -0
  26. package/dist/types/lib/query-context/card-server-request.d.ts +5 -1
  27. package/dist/types/lib/types/common-types.d.ts +7 -0
  28. package/dist/types/lib/types/explorer-types.d.ts +2 -2
  29. package/dist/types/shared/dashboard-authoring/card-query-request.d.ts +20 -0
  30. package/dist/types/shared/format-utils/attachment-filter-line.d.ts +14 -0
  31. package/dist/types/shared/format-utils/filter-line.d.ts +7 -0
  32. package/dist/types/shared/format-utils/index.d.ts +1 -0
  33. package/dist/types/shared/format-utils/pdf-export-policy.d.ts +9 -0
  34. package/package.json +1 -1
@@ -1,19 +1,19 @@
1
1
  import { f as E } from "../chunks/raw-temporal-D61lr48Y.js";
2
2
  import { R as h, x as F, t as y, s as I, u as x, c as M, k as N, l as O, b as D, j as L, h as B, g as $, d as k, A as V, e as X, a as G, i as q, p as j, w as U, m as z, o as K, z as Y, r as H, n as W, q as Q, v as J, y as Z } from "../chunks/raw-temporal-D61lr48Y.js";
3
- import { P as re, A as ae, D as te, u as oe, F as se, c as ie, M as le, b as ne, j as me, h as ue, P as ce, n as pe, k as fe, i as Te, g as Ee, e as be, E as Re, I as Ce, J as Ae, C as de, f as ve, x as Pe, y as we, a as ge, t as _e, z as Se, m as he, d as Fe, s as ye, l as Ie, p as xe, H as Me, w as Ne, o as Oe, q as De, r as Le, B as Be, G as $e, v as ke } from "../chunks/aggregate-table-row-presentation-BjK9YfMI.js";
4
- import { d as Xe, a as Ge, b as qe, e as je, f as Ue, g as ze, c as Ke, p as Ye, h as He, r as We } from "../chunks/matrix-formatter-DQ8avoIQ.js";
3
+ import { P as re, A as ae, D as te, u as oe, F as se, c as ie, M as le, b as ne, j as me, h as ue, P as ce, n as pe, k as fe, i as Te, g as Ee, e as be, G as Ce, J as Re, K as Ae, E as de, f as Pe, x as ve, y as we, a as _e, t as ge, B as Se, m as he, d as Fe, s as ye, l as Ie, p as xe, I as Me, z as Ne, w as Oe, o as De, q as Le, r as Be, C as $e, H as ke, v as Ve } from "../chunks/aggregate-table-row-presentation-B_vQjYR3.js";
4
+ import { d as Ge, a as qe, b as je, e as Ue, f as ze, g as Ke, c as Ye, p as He, h as We, r as Qe } from "../chunks/matrix-formatter-DQ8avoIQ.js";
5
5
  import { c as b } from "../chunks/csv-utils-GUfKyT1J.js";
6
- import { d as Je, a as Ze, C as er, b as rr, D as ar, f as tr, i as or, j as sr, g as ir, e as lr, p as nr, h as mr, r as ur, t as cr } from "../chunks/csv-utils-GUfKyT1J.js";
7
- import { f as R } from "../chunks/pivot-result-lifecycle-8qCDmpKc.js";
8
- import { M as fr, i as Tr, u as Er, P as br, d as Rr, x as Cr, n as Ar, s as dr, t as vr, o as Pr, q as wr, r as gr, a as _r, b as Sr, c as hr, m as Fr, g as yr, w as Ir, p as xr, e as Mr, h as Nr, l as Or, j as Dr, k as Lr, v as Br } from "../chunks/pivot-result-lifecycle-8qCDmpKc.js";
9
- import { FAST_PDF_POLICY as kr, PDF_SAFETY_LIMIT_EXCEEDED as Vr, getUtf8ByteLength as Xr, isFastPdfOutputSizeEligible as Gr, isFastPdfPageCountEligible as qr, isFastPdfRequestSizeEligible as jr, isFastPdfRowCountEligible as Ur } from "../pdf-export-policy/index.js";
10
- import { D as Kr, T as Yr, a as Hr, d as Wr, f as Qr, i as Jr, b as Zr, p as ea, r as ra, c as aa, t as ta, v as oa } from "../chunks/temporal-bucket-D8JF7zKz.js";
11
- import { a as ia, d as la } from "../chunks/filter-value-text-BhWugPWE.js";
12
- import { S as ma } from "../chunks/analytics-base-schemas-BFAoRlkU.js";
13
- import { r as ca } from "../chunks/metric-comparison-CojWeLqx.js";
14
- import { P as fa, p as Ta } from "../chunks/pivot-header-presentation-MkcKnjn3.js";
15
- import { P as ba, b as Ra, i as Ca, c as Aa, d as da, r as va, a as Pa } from "../chunks/pivot-result-identity-D6hhcRXi.js";
16
- import { p as ga, v as _a } from "../chunks/raw-temporal-contract-C51YG48G.js";
6
+ import { d as Ze, a as er, C as rr, b as ar, D as tr, f as or, i as sr, j as ir, g as lr, e as nr, p as mr, h as ur, r as cr, t as pr } from "../chunks/csv-utils-GUfKyT1J.js";
7
+ import { f as C } from "../chunks/pivot-result-lifecycle-8qCDmpKc.js";
8
+ import { M as Tr, i as Er, u as br, P as Cr, d as Rr, x as Ar, n as dr, s as Pr, t as vr, o as wr, q as _r, r as gr, a as Sr, b as hr, c as Fr, m as yr, g as Ir, w as xr, p as Mr, e as Nr, h as Or, l as Dr, j as Lr, k as Br, v as $r } from "../chunks/pivot-result-lifecycle-8qCDmpKc.js";
9
+ import { FAST_PDF_POLICY as Vr, PDF_SAFETY_LIMIT_EXCEEDED as Xr, PDF_TABLE_CARD_TYPES as Gr, getUtf8ByteLength as qr, isFastPdfOutputSizeEligible as jr, isFastPdfPageCountEligible as Ur, isFastPdfRequestSizeEligible as zr, isFastPdfRowCountEligible as Kr, isPdfTableCardType as Yr } from "../pdf-export-policy/index.js";
10
+ import { D as Wr, T as Qr, a as Jr, d as Zr, f as ea, i as ra, b as aa, p as ta, r as oa, c as sa, t as ia, v as la } from "../chunks/temporal-bucket-D8JF7zKz.js";
11
+ import { a as ma, d as ua } from "../chunks/filter-value-text-BhWugPWE.js";
12
+ import { S as pa } from "../chunks/analytics-base-schemas-BFAoRlkU.js";
13
+ import { r as Ta } from "../chunks/metric-comparison-CojWeLqx.js";
14
+ import { P as ba, p as Ca } from "../chunks/pivot-header-presentation-MkcKnjn3.js";
15
+ import { P as Aa, b as da, i as Pa, c as va, d as wa, r as _a, a as ga } from "../chunks/pivot-result-identity-D6hhcRXi.js";
16
+ import { p as ha, v as Fa } from "../chunks/raw-temporal-contract-C51YG48G.js";
17
17
  function p(r) {
18
18
  if (r === null || typeof r != "object" || Array.isArray(r))
19
19
  return !1;
@@ -25,7 +25,7 @@ function T(r, a, o) {
25
25
  if (t)
26
26
  throw new Error(`${o} contains unknown property "${t}"`);
27
27
  }
28
- function P(r, a = "tableTotalsRequest") {
28
+ function v(r, a = "tableTotalsRequest") {
29
29
  if (!p(r))
30
30
  throw new Error(`${a} must be an object`);
31
31
  if (T(r, ["source", "columns"], a), r.source !== "documentFlatTable")
@@ -108,7 +108,7 @@ function w(r, a = "tableTotalsByColumnId") {
108
108
  throw new Error(`${a} must not be empty`);
109
109
  return o;
110
110
  }
111
- function C(r) {
111
+ function R(r) {
112
112
  if (typeof r == "number")
113
113
  return Number.isFinite(r) ? r : null;
114
114
  if (!r.trim())
@@ -116,7 +116,7 @@ function C(r) {
116
116
  const a = Number(r);
117
117
  return Number.isFinite(a) ? a : null;
118
118
  }
119
- function g(r) {
119
+ function _(r) {
120
120
  const a = r.visibleColumns.map((o) => {
121
121
  const t = Object.prototype.hasOwnProperty.call(
122
122
  r.totalsByColumnId,
@@ -126,11 +126,11 @@ function g(r) {
126
126
  return "";
127
127
  if (!r.useFormattedValues)
128
128
  return String(t);
129
- const l = R({
129
+ const l = C({
130
130
  snapshot: r.snapshot,
131
131
  scope: r.scope,
132
132
  target: { kind: "column", columnKey: o }
133
- }), e = l ? C(t) : null;
133
+ }), e = l ? R(t) : null;
134
134
  return l && e !== null ? E(e, l) : String(t);
135
135
  });
136
136
  return b(a, r.delimiter);
@@ -138,157 +138,160 @@ function g(r) {
138
138
  export {
139
139
  re as AGGREGATE_PDF_CONTINUATION_CLASS,
140
140
  ae as AGGREGATE_TOTAL_MEMBER_MARKER,
141
- Je as CSV_CONTENT_TYPE,
142
- Ze as CSV_DELIMITERS,
143
- er as CSV_ENCODINGS,
144
- rr as CSV_RECORD_SEPARATOR,
145
- ar as DEFAULT_CSV_ENCODING,
146
- Kr as DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,
141
+ Ze as CSV_CONTENT_TYPE,
142
+ er as CSV_DELIMITERS,
143
+ rr as CSV_ENCODINGS,
144
+ ar as CSV_RECORD_SEPARATOR,
145
+ tr as DEFAULT_CSV_ENCODING,
146
+ Wr as DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,
147
147
  te as DIRECT_CSV_EXPORT_MAX_ROWS,
148
- kr as FAST_PDF_POLICY,
148
+ Vr as FAST_PDF_POLICY,
149
149
  oe as FILTER_LINE_MAX_LISTED_VALUES,
150
150
  se as FULL_DATASET_CSV_EXPORT_MAX_ROWS,
151
151
  ie as MATRIX_EXPORT_MAX_ARTIFACT_BYTES,
152
152
  le as MATRIX_EXPORT_MAX_CELLS,
153
153
  ne as MATRIX_EXPORT_MAX_ENCODED_BYTES,
154
- fr as MATRIX_EXPORT_TRANSFER_BYTES,
154
+ Tr as MATRIX_EXPORT_TRANSFER_BYTES,
155
155
  me as MATRIX_PRINT_DEFAULT_DECIMALS,
156
156
  ue as MATRIX_PRINT_ORGANIZATION_DEFAULTS,
157
- Tr as MissingResolvedRawTemporalFormatError,
157
+ Er as MissingResolvedRawTemporalFormatError,
158
158
  ce as PDF_GROUP_CONTINUATION_CLASS,
159
- Vr as PDF_SAFETY_LIMIT_EXCEEDED,
159
+ Xr as PDF_SAFETY_LIMIT_EXCEEDED,
160
+ Gr as PDF_TABLE_CARD_TYPES,
160
161
  pe as PdfSafetyLimitError,
161
- fa as PivotHeaderPresentationError,
162
- ba as PivotResultIdentityError,
163
- Er as PivotResultLifecycleError,
164
- br as PresentationExecutionSnapshotError,
162
+ ba as PivotHeaderPresentationError,
163
+ Aa as PivotResultIdentityError,
164
+ br as PivotResultLifecycleError,
165
+ Cr as PresentationExecutionSnapshotError,
165
166
  h as RawTemporalFormatContractError,
166
- ma as SEMAPHOR_GENERATED_COUNT_METRIC_ID,
167
- Yr as TEMPORAL_BUCKET_PATTERN_TOKENS,
168
- Hr as TemporalBucketContractError,
167
+ pa as SEMAPHOR_GENERATED_COUNT_METRIC_ID,
168
+ Qr as TEMPORAL_BUCKET_PATTERN_TOKENS,
169
+ Jr as TemporalBucketContractError,
169
170
  fe as applyMatrixPrintNumberDefaults,
170
171
  Te as applyMatrixPrintOrganization,
171
172
  Rr as assertMatrixBatchResponseSize,
172
173
  F as assertRawTemporalChunkClassificationAgreement,
173
- g as buildFlatTableExportTotalsFooter,
174
+ _ as buildFlatTableExportTotalsFooter,
174
175
  Ee as buildMatrixPrintTable,
175
176
  be as buildMatrixTableStructure,
176
177
  y as classifyDeclaredSqlTemporalColumn,
177
178
  I as classifyTemporalLiteral,
178
- Cr as createCanonicalPivotResultTransport,
179
- Ar as createPresentationExecutionSnapshot,
179
+ Ar as createCanonicalPivotResultTransport,
180
+ dr as createPresentationExecutionSnapshot,
180
181
  x as createRawTemporalChunkClassificationEvidence,
181
- tr as csvFilePreamble,
182
+ or as csvFilePreamble,
182
183
  b as csvRecord,
183
- or as csvRecords,
184
- dr as deriveMetricInstanceAliasExpectations,
184
+ sr as csvRecords,
185
+ Pr as deriveMetricInstanceAliasExpectations,
185
186
  vr as derivePivotResultContractExpectations,
186
- ia as describeConditionInFullDetail,
187
- la as describeFilterValueInFullDetail,
188
- Wr as describeTemporalBucketCalendar,
189
- sr as encodeCsvFile,
190
- ir as escapeCSVValue,
191
- R as findResolvedMeasureFormat,
192
- Pr as findResolvedNumericFormat,
193
- wr as findResolvedRawTemporalFormat,
187
+ ma as describeConditionInFullDetail,
188
+ ua as describeFilterValueInFullDetail,
189
+ Zr as describeTemporalBucketCalendar,
190
+ ir as encodeCsvFile,
191
+ lr as escapeCSVValue,
192
+ C as findResolvedMeasureFormat,
193
+ wr as findResolvedNumericFormat,
194
+ _r as findResolvedRawTemporalFormat,
194
195
  gr as findResolvedTemporalBucketFormat,
195
- Re as formatAggregateGrandTotalLabel,
196
- Ce as formatAggregateGroupCell,
196
+ Ce as formatAggregateGrandTotalLabel,
197
+ Re as formatAggregateGroupCell,
197
198
  Ae as formatAggregateGroupRow,
198
199
  de as formatAggregateSubtotalLabel,
199
- ve as formatCanonicalComparisonRange,
200
- Xe as formatCellValue,
200
+ Pe as formatCanonicalComparisonRange,
201
+ Ge as formatCellValue,
201
202
  M as formatCurrency,
202
- Ge as formatDate,
203
+ qe as formatDate,
203
204
  N as formatDuration,
204
205
  O as formatDurationCanonical,
205
- Pe as formatFilterCondition,
206
+ ve as formatFilterCondition,
206
207
  we as formatFilterLine,
207
208
  E as formatMeasureCanonical,
208
- ge as formatMetricComparison,
209
+ _e as formatMetricComparison,
209
210
  D as formatNumber,
210
211
  L as formatNumberCustom,
211
212
  B as formatNumberWithColumnSettings,
212
213
  $ as formatNumericCanonical,
213
214
  k as formatPercent,
214
215
  V as formatRawTemporalValue,
215
- qe as formatRelativeTime,
216
- je as formatRowForExport,
216
+ je as formatRelativeTime,
217
+ Ue as formatRowForExport,
217
218
  X as formatScientific,
218
- Qr as formatTemporalBucket,
219
- _e as formatTemporalInputValue,
220
- Ue as fromSemanticFormat,
221
- ze as getTimezoneAbbreviation,
222
- Ke as getTimezoneName,
223
- Xr as getUtf8ByteLength,
219
+ ea as formatTemporalBucket,
220
+ ge as formatTemporalInputValue,
221
+ ze as fromSemanticFormat,
222
+ Ke as getTimezoneAbbreviation,
223
+ Ye as getTimezoneName,
224
+ qr as getUtf8ByteLength,
224
225
  Se as isAggregateTotalMemberMarker,
225
- Gr as isFastPdfOutputSizeEligible,
226
- qr as isFastPdfPageCountEligible,
227
- jr as isFastPdfRequestSizeEligible,
228
- Ur as isFastPdfRowCountEligible,
226
+ jr as isFastPdfOutputSizeEligible,
227
+ Ur as isFastPdfPageCountEligible,
228
+ zr as isFastPdfRequestSizeEligible,
229
+ Kr as isFastPdfRowCountEligible,
229
230
  G as isMeasureCanonicalFormat,
230
231
  q as isNumericCanonicalFormat,
231
- Ra as isPivotEmptyTupleAllowed,
232
- Ca as isPivotSubtotalPrefix,
233
- Jr as isTemporalBucketPreset,
234
- _r as matrixAttemptKey,
235
- Sr as matrixBatchInputSchema,
236
- hr as matrixBatchResponseSchema,
237
- Fr as matrixExportDeadlineSchema,
232
+ Yr as isPdfTableCardType,
233
+ da as isPivotEmptyTupleAllowed,
234
+ Pa as isPivotSubtotalPrefix,
235
+ ra as isTemporalBucketPreset,
236
+ Sr as matrixAttemptKey,
237
+ hr as matrixBatchInputSchema,
238
+ Fr as matrixBatchResponseSchema,
239
+ yr as matrixExportDeadlineSchema,
238
240
  he as matrixFlatCsvHeaders,
239
241
  Fe as matrixFlatCsvRow,
240
- yr as matrixManifestSchema,
241
- Ir as parseCanonicalPivotResultTransport,
242
- lr as parseCsvDelimiter,
243
- nr as parseCsvEncoding,
242
+ Ir as matrixManifestSchema,
243
+ xr as parseCanonicalPivotResultTransport,
244
+ nr as parseCsvDelimiter,
245
+ mr as parseCsvEncoding,
244
246
  w as parseFlatTableExportTotalsByColumnId,
245
- P as parseFlatTableExportTotalsRequest,
246
- xr as parseMatrixAttemptKey,
247
- Mr as parseMatrixBatchResponse,
248
- Nr as parseMatrixManifest,
247
+ v as parseFlatTableExportTotalsRequest,
248
+ Mr as parseMatrixAttemptKey,
249
+ Nr as parseMatrixBatchResponse,
250
+ Or as parseMatrixManifest,
249
251
  j as parseNumericCanonicalFormat,
250
- Or as parsePresentationExecutionSnapshot,
251
- Dr as parsePresentationScope,
252
+ Dr as parsePresentationExecutionSnapshot,
253
+ Lr as parsePresentationScope,
252
254
  U as parseRawTemporalChunkClassificationEvidence,
253
- ga as parseRawTemporalValueMetadata,
255
+ ha as parseRawTemporalValueMetadata,
254
256
  z as parseResolvedNumericCanonicalFormat,
255
- Lr as parseResolvedPresentationEntries,
257
+ Br as parseResolvedPresentationEntries,
256
258
  K as parseResolvedRawTemporalFormat,
257
- Zr as parseResolvedTemporalBucketFormat,
258
- ea as parseTemporalBucketValue,
259
+ aa as parseResolvedTemporalBucketFormat,
260
+ ta as parseTemporalBucketValue,
259
261
  ye as parseTemporalInputPresentation,
260
- Ye as parseWithSourceTimezone,
262
+ He as parseWithSourceTimezone,
261
263
  Ie as planMatrixKeepWithPrevious,
262
264
  xe as prepareMatrixExportPresentation,
263
- He as prepareMatrixFormatting,
265
+ We as prepareMatrixFormatting,
264
266
  Y as prepareRawTemporalFormatter,
265
267
  Me as presentAggregateGroupRow,
266
- Ta as presentPivotHeader,
267
- mr as protectCSVText,
268
- Ne as readNamedRelativeWindow,
269
- Oe as readPdfErrorResponse,
270
- De as requestStructuredPdf,
271
- Aa as requirePivotHeaderMembers,
272
- da as requirePivotResultColumnIdentities,
273
- Le as requiresChunkedCsvExport,
274
- Be as resolveAggregateTablePresentationContext,
275
- ra as resolveApplicableTemporalBucketFormat,
276
- ur as resolveCsvEncoding,
268
+ Ca as presentPivotHeader,
269
+ ur as protectCSVText,
270
+ Ne as readAttachmentFilterLineValues,
271
+ Oe as readNamedRelativeWindow,
272
+ De as readPdfErrorResponse,
273
+ Le as requestStructuredPdf,
274
+ va as requirePivotHeaderMembers,
275
+ wa as requirePivotResultColumnIdentities,
276
+ Be as requiresChunkedCsvExport,
277
+ $e as resolveAggregateTablePresentationContext,
278
+ oa as resolveApplicableTemporalBucketFormat,
279
+ cr as resolveCsvEncoding,
277
280
  H as resolveCurrencyFractionDigits,
278
- ca as resolveMetricResultAlias,
281
+ Ta as resolveMetricResultAlias,
279
282
  W as resolveNumericPresentation,
280
- va as resolveQueryColumnKeyMapEntry,
283
+ _a as resolveQueryColumnKeyMapEntry,
281
284
  Q as resolveRawTemporalFormat,
282
- aa as resolveTemporalBucketPresentation,
283
- We as resolveTimezone,
284
- Pa as resolveUniqueQueryColumnKeyMapEntry,
285
- $e as shouldPresentAggregateGroupValue,
286
- cr as toCsvCell,
287
- ta as tokenizeTemporalBucketPattern,
285
+ sa as resolveTemporalBucketPresentation,
286
+ Qe as resolveTimezone,
287
+ ga as resolveUniqueQueryColumnKeyMapEntry,
288
+ ke as shouldPresentAggregateGroupValue,
289
+ pr as toCsvCell,
290
+ ia as tokenizeTemporalBucketPattern,
288
291
  J as validateCardExportNumericPresentationSnapshot,
289
- Br as validateCardExportPresentationSnapshot,
292
+ $r as validateCardExportPresentationSnapshot,
290
293
  Z as validateRawTemporalPattern,
291
- _a as validateRawTemporalResultColumn,
292
- oa as validateTemporalBucketFormatApplicability,
293
- ke as validateTemporalInputPattern
294
+ Fa as validateRawTemporalResultColumn,
295
+ la as validateTemporalBucketFormatApplicability,
296
+ Ve as validateTemporalInputPattern
294
297
  };
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
- import { D as I } from "./chunks/dashboard-B6Bithfl.js";
1
+ import { D as I } from "./chunks/dashboard-B6IrON_Q.js";
2
2
  import { C as na, E as ia } from "./chunks/common-types-CUf03Htv.js";
3
- import { C as k, b as M, c as O, d as U, e as V, f as z } from "./chunks/report-preferences-dialog-neMDolLg.js";
4
- import { g as ca, A as ua, h as da, a as pa, R as fa, D as ma } from "./chunks/report-preferences-dialog-neMDolLg.js";
3
+ import { C as k, b as M, c as O, d as U, e as V, f as z } from "./chunks/report-preferences-dialog-DpNkFfQO.js";
4
+ import { g as ca, A as ua, h as da, a as pa, R as fa, D as ma } from "./chunks/report-preferences-dialog-DpNkFfQO.js";
5
5
  import { jsx as n, jsxs as C } from "react/jsx-runtime";
6
- import { E as N, F as q, S as $, a as H, U as W, c as Q, C as K, u as _, V as G, d as Y, e as J, s as X, R as Z } from "./chunks/semaphor-ready-indicator--4DWtVBu.js";
7
- import { aq as ga, ar as Ca, as as ya, B as ba, $ as Ea, z as Da, x as va, w as Aa, aA as xa, M as Sa, h as Ta, k as wa, k as Ba, l as Pa, y as Na, al as _a, an as Fa, ao as Ra, am as ja, ac as La, af as Ia, az as ka, a3 as Ma, ak as Oa, Y as Ua, au as Va, av as za, a7 as qa, ag as $a, v as Ha, t as Wa, q as Qa, r as Ka, aD as Ga, a2 as Ya, ah as Ja, ai as Xa, ab as Za, ae as et, ay as at, ax as tt, aw as st, aC as rt, aB as ot, ad as nt, a1 as it, a0 as lt, P as ct, a5 as ut, aj as dt, a9 as pt, a6 as ft, a8 as mt, aa as ht, a4 as gt, L as Ct, I as yt, p as bt, at as Et, o as Dt, G as vt, Q as At, W as xt, T as St, X as Tt, n as wt, g as Bt, A as Pt, H as Nt, i as _t, _ as Ft, O as Rt, Z as jt, K as Lt, J as It, N as kt, f as Mt, m as Ot, j as Ut, ap as Vt } from "./chunks/semaphor-ready-indicator--4DWtVBu.js";
6
+ import { E as N, F as q, S as $, a as H, U as W, c as Q, C as K, u as _, V as G, d as Y, e as J, s as X, R as Z } from "./chunks/semaphor-ready-indicator-KT598QJq.js";
7
+ import { aq as ga, ar as Ca, as as ya, B as ba, $ as Ea, z as Da, x as va, w as Aa, aA as xa, M as Sa, h as Ta, k as wa, k as Ba, l as Pa, y as Na, al as _a, an as Fa, ao as Ra, am as ja, ac as La, af as Ia, az as ka, a3 as Ma, ak as Oa, Y as Ua, au as Va, av as za, a7 as qa, ag as $a, v as Ha, t as Wa, q as Qa, r as Ka, aD as Ga, a2 as Ya, ah as Ja, ai as Xa, ab as Za, ae as et, ay as at, ax as tt, aw as st, aC as rt, aB as ot, ad as nt, a1 as it, a0 as lt, P as ct, a5 as ut, aj as dt, a9 as pt, a6 as ft, a8 as mt, aa as ht, a4 as gt, L as Ct, I as yt, p as bt, at as Et, o as Dt, G as vt, Q as At, W as xt, T as St, X as Tt, n as wt, g as Bt, A as Pt, H as Nt, i as _t, _ as Ft, O as Rt, Z as jt, K as Lt, J as It, N as kt, f as Mt, m as Ot, j as Ut, ap as Vt } from "./chunks/semaphor-ready-indicator-KT598QJq.js";
8
8
  import * as S from "react";
9
9
  import F, { useMemo as ee, useEffect as R } from "react";
10
10
  import { D as qt } from "./chunks/token-types-bxUxXDX2.js";
11
11
  import { C as Ht, D as Wt, L as Qt, P as Kt, e as Gt, g as Yt, j as Jt, h as Xt, k as Zt, d as es, b as as, i as ts, c as ss, n as rs, f as os } from "./chunks/validators-Ej1DdCXa.js";
12
- import { A as is, h as ls, D as cs, f as us, g as ds, e as ps, b as fs, E as ms, N as hs, U as gs, a as Cs, V as ys, W as bs, i as Es, u as Ds, c as vs, d as As } from "./chunks/dashboard-briefing-launcher-DJI-zfEq.js";
12
+ import { A as is, h as ls, D as cs, f as us, g as ds, e as ps, b as fs, E as ms, N as hs, U as gs, a as Cs, V as ys, W as bs, i as Es, u as Ds, c as vs, d as As } from "./chunks/dashboard-briefing-launcher-DwjFpewq.js";
13
13
  import { u as Ss } from "./chunks/use-debounced-dirty-check-BwAbnX_5.js";
14
14
  import { createRoot as ae } from "react-dom/client";
15
- import "./chunks/shelf-drop-preview-context-CpdB5ois.js";
15
+ import "./chunks/shelf-drop-preview-context-BxV3Fl8h.js";
16
16
  import "./chunks/index-CuHybtft.js";
17
17
  import "./chunks/matrix-operation-contract-B8PBF1Gd.js";
18
18
  import "./chunks/analytics-base-schemas-BFAoRlkU.js";
@@ -26,14 +26,14 @@ import "./value-format-preferences/index.js";
26
26
  import { r as Ps, a as Ns } from "./chunks/pivot-result-identity-D6hhcRXi.js";
27
27
  import "./chunks/calculated-field-identity-DcBS2NPP.js";
28
28
  import { c as ie } from "./chunks/apply-dashboard-operations-C-iahGka.js";
29
- import { t as Fs, m as Rs, v as js, u as Ls, y as Is, z as ks, s as Ms, q as Os, w as Us, p as Vs, o as zs, n as qs, A as $s, x as Hs } from "./chunks/document-dashboard-inputs-BrYYlRVo.js";
29
+ import { t as Fs, m as Rs, v as js, u as Ls, y as Is, z as ks, s as Ms, q as Os, w as Us, p as Vs, o as zs, n as qs, A as $s, x as Hs } from "./chunks/document-dashboard-inputs-DP_Op5mu.js";
30
30
  import "./chunks/bookmark-state-k7y5SNGf.js";
31
31
  import "react-dom";
32
- import "./chunks/index-CqMiAkay.js";
32
+ import "./chunks/index-DaQlghLY.js";
33
33
  import "./chunks/appearance-context-DEYtWinQ.js";
34
34
  import "./chunks/color-CJvdlFM_.js";
35
35
  import "./chunks/index-CLIro-EG.js";
36
- import { I as le } from "./chunks/use-create-flow-overlay-state-8g6Zhphh.js";
36
+ import { I as le } from "./chunks/use-create-flow-overlay-state-DdD12SMY.js";
37
37
  import { n as Qs, s as Ks } from "./chunks/normalize-dashboard-for-dirty-check-Bk3VYv_q.js";
38
38
  import { C as ce } from "./chunks/x-4f5U2XwU.js";
39
39
  import "./chunks/appearance-runtime-provider-B-M8gwlZ.js";
@@ -5,28 +5,38 @@ const t = Object.freeze({
5
5
  maxPages: 100,
6
6
  maxOutputBytes: 52428800
7
7
  // 50 MiB
8
- }), s = "PDF_SAFETY_LIMIT_EXCEEDED";
9
- function i(e) {
8
+ }), s = "PDF_SAFETY_LIMIT_EXCEEDED", i = Object.freeze([
9
+ "table",
10
+ "detailTable",
11
+ "aggregateTable",
12
+ "pivotTable"
13
+ ]);
14
+ function n(e) {
15
+ return typeof e == "string" && i.includes(e);
16
+ }
17
+ function r(e) {
10
18
  return new TextEncoder().encode(e).byteLength;
11
19
  }
12
20
  function u(e) {
13
21
  return Number.isInteger(e) && e > 0 && e <= t.maxRows;
14
22
  }
15
- function n(e) {
23
+ function a(e) {
16
24
  return Number.isInteger(e) && e >= 0 && e <= t.maxRequestBytes;
17
25
  }
18
- function r(e) {
26
+ function E(e) {
19
27
  return Number.isInteger(e) && e > 0 && e <= t.maxPages;
20
28
  }
21
- function E(e) {
29
+ function f(e) {
22
30
  return Number.isInteger(e) && e > 0 && e <= t.maxOutputBytes;
23
31
  }
24
32
  export {
25
33
  t as FAST_PDF_POLICY,
26
34
  s as PDF_SAFETY_LIMIT_EXCEEDED,
27
- i as getUtf8ByteLength,
28
- E as isFastPdfOutputSizeEligible,
29
- r as isFastPdfPageCountEligible,
30
- n as isFastPdfRequestSizeEligible,
31
- u as isFastPdfRowCountEligible
35
+ i as PDF_TABLE_CARD_TYPES,
36
+ r as getUtf8ByteLength,
37
+ f as isFastPdfOutputSizeEligible,
38
+ E as isFastPdfPageCountEligible,
39
+ a as isFastPdfRequestSizeEligible,
40
+ u as isFastPdfRowCountEligible,
41
+ n as isPdfTableCardType
32
42
  };
@@ -1,4 +1,4 @@
1
- import { a, R as s, D as o } from "../chunks/report-preferences-dialog-neMDolLg.js";
1
+ import { a, R as s, D as o } from "../chunks/report-preferences-dialog-DpNkFfQO.js";
2
2
  import { C as f, E as D } from "../chunks/common-types-CUf03Htv.js";
3
3
  export {
4
4
  f as CONTROL_CARD_DEFAULT_VALUE,
@@ -0,0 +1,23 @@
1
+ import { BriefingAttachmentFormat } from './index.js';
2
+ /**
3
+ * Why a scheduled report left an attachment out (report attachment delivery
4
+ * RA-D14). The app decides the code and writes the customer line; the run
5
+ * card reads both back from the run.
6
+ */
7
+ export declare const BRIEFING_ATTACHMENT_OMISSION_CODES: readonly ["PDF_ROW_LIMIT_EXCEEDED", "PDF_SIZE_LIMIT_EXCEEDED", "TABLE_COMPLETENESS_UNVERIFIED", "CARD_QUERY_FAILED", "RENDER_NOT_READY", "RENDER_TIMED_OUT", "EXPORT_JOB_FAILED", "ATTACHMENT_UNAVAILABLE"];
8
+ export type BriefingAttachmentOmissionCode = (typeof BRIEFING_ATTACHMENT_OMISSION_CODES)[number];
9
+ /** One left-out attachment, as recorded on the run and read by every channel. */
10
+ export type BriefingOmittedAttachment = {
11
+ /** Position in the Briefing's attachment list. */
12
+ index: number;
13
+ title: string;
14
+ format: BriefingAttachmentFormat;
15
+ code: BriefingAttachmentOmissionCode;
16
+ /** The customer line recipients and the author read. */
17
+ reason: string;
18
+ /** Redacted detail, shown to the author only. */
19
+ diagnostic: string;
20
+ };
21
+ export declare function isBriefingAttachmentOmissionCode(value: unknown): value is BriefingAttachmentOmissionCode;
22
+ /** Reads `run.result.omittedAttachments`; drops malformed entries; [] when absent. */
23
+ export declare function readBriefingOmittedAttachments(result: unknown): BriefingOmittedAttachment[];
@@ -6,6 +6,7 @@ export { captureMatrixExport, buildMatrixDeliveryEnvelope, matrixDeliveryPayload
6
6
  export declare const BRIEFING_KIND: "BRIEFING";
7
7
  export { DEFAULT_BRIEFING_SCHEDULE, briefingScheduleMonths, briefingScheduleDayOccurs, briefingScheduleShortMonths, buildBriefingScheduleExpr, canonicalBriefingMonthDays, describeBriefingSchedule, isValidBriefingTimezone, nextBriefingScheduleDates, parseBriefingScheduleExpr, type BriefingScheduleFrequency, type BriefingScheduleMonthDay, type BriefingScheduleMonthInterval, type BriefingScheduleMonthlyOn, type BriefingScheduleOrdinal, type BriefingScheduleViewModel, } from './schedule.js';
8
8
  export { getBriefingCardAttachmentCapability, getBriefingCardAttachmentFormats, getDefaultBriefingCardAttachmentFormat, type BriefingCardAttachmentCapability, } from './attachments.js';
9
+ export { BRIEFING_ATTACHMENT_OMISSION_CODES, isBriefingAttachmentOmissionCode, readBriefingOmittedAttachments, type BriefingAttachmentOmissionCode, type BriefingOmittedAttachment, } from './attachment-outcomes.js';
9
10
  export { canCreateBriefingForUser, type BriefingUiUser } from './capabilities.js';
10
11
  export { getBriefingCreationIntents, type BriefingAuthorIntent, } from './creation.js';
11
12
  export { getBriefingDisplayTypeLabel, getBriefingPresentation, isEmailOnlyBriefingDelivery, type BriefingDisplayTypeLabel, type BriefingEntityPresentation, } from './display.js';
@@ -15,6 +15,7 @@ export declare function useCard(cardId: string): {
15
15
  queryInputIdentity: string | undefined;
16
16
  effectivePaginationConfig: import('../types/index.js').PaginationConfig | undefined;
17
17
  queryRequestPayload: Record<string, unknown> | undefined;
18
+ sourceRowProbe: import('../../shared/dashboard-authoring/index.js').CardQuerySourceRowProbe | undefined;
18
19
  pagination: import('../types/index.js').PaginationMetadata | undefined;
19
20
  comparisonMetadata: import('../../shared/analytics-protocol/index.js').MetricComparisonMetadataMap | undefined;
20
21
  resolvedPrimaryDateField: import('../types/semantic-runtime-types.js').ResolvedPrimaryDateField | undefined;
@@ -35,6 +36,7 @@ export declare function useDashboardCard(card: TCard): {
35
36
  queryInputIdentity: string | undefined;
36
37
  effectivePaginationConfig: import('../types/index.js').PaginationConfig | undefined;
37
38
  queryRequestPayload: Record<string, unknown> | undefined;
39
+ sourceRowProbe: import('../../shared/dashboard-authoring/index.js').CardQuerySourceRowProbe | undefined;
38
40
  pagination: import('../types/index.js').PaginationMetadata | undefined;
39
41
  comparisonMetadata: import('../../shared/analytics-protocol/index.js').MetricComparisonMetadataMap | undefined;
40
42
  resolvedPrimaryDateField: import('../types/semantic-runtime-types.js').ResolvedPrimaryDateField | undefined;
@@ -39,10 +39,14 @@ export declare function resolveCardRequestExtras(input: {
39
39
  card: TCard;
40
40
  /** The config the card runs with (drilled, sorted): its totals are taken from it. */
41
41
  finalConfig: CardConfig | undefined;
42
- /** A printed table runs whole. Default: on screen. */
42
+ /**
43
+ * A printed table runs whole. Default: on screen. `deliveryStrict` (a
44
+ * scheduled report's render) also asks for source-row evidence (RA-D15).
45
+ */
43
46
  display?: {
44
47
  isTablePrintMode: boolean;
45
48
  isPrintDisplayMode: boolean;
49
+ deliveryStrict?: boolean;
46
50
  };
47
51
  /** Present for a card in a Document section, with the section's table policy. */
48
52
  documentSection?: {
@@ -131,6 +131,13 @@ export type VisualDisplayPreferences = {
131
131
  * - 'table-print': Table-specific print mode (title only, no pagination/toolbar)
132
132
  */
133
133
  mode?: VisualDisplayMode;
134
+ /**
135
+ * 'strict' only on a render made for delivery (a scheduled report). A table
136
+ * print query then asks for source-row evidence, and a card that can't be
137
+ * delivered complete marks the page instead of printing. Absent: behave
138
+ * exactly as today (report attachment delivery RA-D11).
139
+ */
140
+ delivery?: 'strict';
134
141
  /**
135
142
  * Override specific UI elements visibility
136
143
  * These overrides take precedence over the mode presets
@@ -1,7 +1,7 @@
1
1
  import { TimeDrillStep } from './interaction-types.js';
2
2
  import { SemaphorDerivedFieldDefinition, MatrixConfig, SemaphorSourceRef, SemaphorResultColumn, SemaphorPivotValue, SemaphorTimeGrain, SemanticGroupedTemporalInput, TemporalBucketMetadata, TemporalBucketFormat, MetricComparisonConfig, MetricComparisonPolarity } from '../../shared/analytics-protocol/index.js';
3
3
  import { CanonicalPivotResultContract, CanonicalPivotResultState, FlatTableExportTotalsBehavior, FlatTableExportTotalsRequest, QueryColumnKeyMap as SharedQueryColumnKeyMap } from '../../shared/format-utils/index.js';
4
- import { TemporalResultOwner } from '../../shared/dashboard-authoring/index.js';
4
+ import { CardQuerySourceRowEvidence, TemporalResultOwner } from '../../shared/dashboard-authoring/index.js';
5
5
  import { RelativeDateFilter } from '../../shared/analytics-protocol/relative-date-filter.js';
6
6
  /**
7
7
  * Special entity name marker for calculated fields.
@@ -708,7 +708,7 @@ export type TableTotalsRequest = FlatTableExportTotalsRequest;
708
708
  /**
709
709
  * Response structure for query execution (standard queries and comparison queries)
710
710
  */
711
- export interface QueryExecutionResponse {
711
+ export interface QueryExecutionResponse extends CardQuerySourceRowEvidence {
712
712
  records: any[];
713
713
  /** Execution owner captured with these exact result rows. */
714
714
  resultOwner?: TemporalResultOwner;
@@ -70,7 +70,27 @@ export type CardQueryRequestExtras = {
70
70
  pageSize: number;
71
71
  };
72
72
  tableTotalsRequest?: TableTotalsRequest;
73
+ /** Strict table print only; never sent with `pagination`. */
74
+ sourceRowProbe?: CardQuerySourceRowProbe;
73
75
  };
76
+ /**
77
+ * Ask acquisition whether the source had more rows than `limit`, counted
78
+ * before any Python step or pivot (report attachment delivery RA-D15, RA-D17).
79
+ */
80
+ export type CardQuerySourceRowProbe = {
81
+ limit: number;
82
+ };
83
+ /**
84
+ * What acquisition reports for a `CardQuerySourceRowProbe`: `true` when the
85
+ * source had more rows than the limit, `false` when not. Absent when nobody
86
+ * asked or the answer is unknown, and never read as `false`.
87
+ */
88
+ export type CardQuerySourceRowEvidence = {
89
+ sourceRowOverflow?: boolean;
90
+ };
91
+ type DecidedExtrasField = 'pagination' | 'tableTotalsRequest' | 'sourceRowProbe';
92
+ /** Every extras field is parsed here and built by `resolveCardRequestExtras`. */
93
+ export type CardQueryRequestExtrasDecided = AssertNever<Exclude<keyof CardQueryRequestExtras, DecidedExtrasField>>;
74
94
  /** The context fields any query body may carry, checked the same way for every reader. */
75
95
  export type CardQueryRequestContext = Pick<CardQueryRequest, 'calendarContext' | 'resolvedPrimaryDateField' | 'globalDateComparison'>;
76
96
  /**
@@ -0,0 +1,14 @@
1
+ import { FilterLineValue } from './filter-line.js';
2
+ /**
3
+ * The filter values a scheduled attachment's filter line is made of, read
4
+ * from its saved settings: values with a name and a values list, each saved
5
+ * relative date read through the shared reader (a malformed one is dropped so
6
+ * the value keeps its fixed dates, as the dashboard's own replay does).
7
+ *
8
+ * One owner for the run's PDF header (semaphor-app `buildRunFilterLine`) and
9
+ * the schedule dialog. It ignores `includeFilters`: that switch only hides the
10
+ * printed line, and the filters still apply to the data.
11
+ */
12
+ export declare function readAttachmentFilterLineValues(settings: {
13
+ filterValues?: readonly unknown[];
14
+ } | undefined): FilterLineValue[];
@@ -13,6 +13,13 @@ export type FilterLineValue = {
13
13
  };
14
14
  type FormatFilterLineOptions = {
15
15
  timezone?: string;
16
+ /**
17
+ * 'label': every relative window prints by its label ("Last 7 days"), for a
18
+ * reader that shows saved values rather than a run's resolved dates (the
19
+ * schedule dialog). Absent: quarter, year and latest-data windows print by
20
+ * name and every other window prints its dates, as a run's PDF header does.
21
+ */
22
+ relativeDates?: 'label';
16
23
  };
17
24
  type FormatFilterConditionOptions = FormatFilterLineOptions & {
18
25
  /** The filter's display name; defaults to its column name in title case. */
@@ -31,6 +31,7 @@ export * from './raw-temporal.js';
31
31
  export * from './temporal-input-presentation.js';
32
32
  export * from './flat-table-export-totals.js';
33
33
  export * from './filter-line.js';
34
+ export * from './attachment-filter-line.js';
34
35
  export { describeFilterValueInFullDetail, type FullDetailFilterValue, } from './filter-value-text.js';
35
36
  export { describeConditionInFullDetail, type FilterClauseText } from './filter-detail.js';
36
37
  export { formatCanonicalComparisonRange } from '../../lib/utils/comparison-window-caption.js';
@@ -12,6 +12,15 @@ export declare const FAST_PDF_POLICY: Readonly<{
12
12
  maxOutputBytes: 52428800;
13
13
  }>;
14
14
  export declare const PDF_SAFETY_LIMIT_EXCEEDED: "PDF_SAFETY_LIMIT_EXCEEDED";
15
+ /**
16
+ * Card types a PDF prints as a table, across pages, in table mode. The one
17
+ * list every reader uses: the interactive download and export dialog, the
18
+ * fast path, the print views and scheduled attachments (report attachment
19
+ * delivery RA-D1).
20
+ */
21
+ export declare const PDF_TABLE_CARD_TYPES: readonly ["table", "detailTable", "aggregateTable", "pivotTable"];
22
+ export type PdfTableCardType = (typeof PDF_TABLE_CARD_TYPES)[number];
23
+ export declare function isPdfTableCardType(cardType: unknown): cardType is PdfTableCardType;
15
24
  /** Exact UTF-8 bytes used by the structured POST body. */
16
25
  export declare function getUtf8ByteLength(value: string): number;
17
26
  export declare function isFastPdfRowCountEligible(rowCount: number): boolean;
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.1.540",
8
+ "version": "0.1.541",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",