react-semaphor 0.1.525 → 0.1.527

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 (196) hide show
  1. package/DATA_APP_SDK.md +5 -1
  2. package/dist/analytics-protocol/index.js +1179 -296
  3. package/dist/brand-studio/index.js +31 -31
  4. package/dist/briefings/index.js +50 -49
  5. package/dist/chunks/{calculated-field-identity-Dy_WpDdo.js → calculated-field-identity-DEhjPSr-.js} +77 -76
  6. package/dist/chunks/{card-config-utils-CAyjC5Tp.js → card-config-utils-BlIbwkuD.js} +62 -59
  7. package/dist/chunks/{constants-DeLIHVAW.js → constants-DNWVy8Y3.js} +4 -4
  8. package/dist/chunks/dashboard-JNHR0_cZ.js +14 -0
  9. package/dist/chunks/{dashboard-briefing-launcher-BilVIEyw.js → dashboard-briefing-launcher-D9pFByPh.js} +274 -267
  10. package/dist/chunks/{dashboard-controls-DyLPcvCK.js → dashboard-controls-CJI5ZWMq.js} +740 -692
  11. package/dist/chunks/dashboard-json-DLdrFry-.js +65 -0
  12. package/dist/chunks/{edit-dashboard-visual-DtmKNNdE.js → edit-dashboard-visual-D5LjWle1.js} +6760 -6728
  13. package/dist/chunks/editor-action-buttons-G91NQKxU.js +2070 -0
  14. package/dist/chunks/{field-aggregations-BQjogiI1.js → field-aggregations-DeVQLIsP.js} +19 -19
  15. package/dist/chunks/{field-dependencies-v-lJNzC7.js → field-dependencies-CGYic38w.js} +1 -1
  16. package/dist/chunks/{index-ON7Gpvcv.js → index-BvJOYbNv.js} +760 -750
  17. package/dist/chunks/{matrix-analytical-definition-BimC4XIV.js → matrix-analytical-definition-BJyH5-99.js} +1 -1
  18. package/dist/chunks/{matrix-card-CIlz0Dnp.js → matrix-card-DY45yiUM.js} +7 -6
  19. package/dist/chunks/{matrix-control-sources-B1K7x0SL.js → matrix-control-sources-BypfLZsK.js} +36 -36
  20. package/dist/chunks/{matrix-definition-E5gXXSTZ.js → matrix-definition-Cdn3LoxW.js} +3 -3
  21. package/dist/chunks/{semantic-format-Baqp8kD_.js → matrix-formatter-BoKU3MzZ.js} +655 -511
  22. package/dist/chunks/{matrix-member-presentation-Bw7-JCrr.js → matrix-member-presentation-BBW0n1iY.js} +1 -1
  23. package/dist/chunks/matrix-operation-contract-BV02rLhu.js +809 -0
  24. package/dist/chunks/{metric-comparison-BphoJ9bq.js → metric-comparison-Crljx_XY.js} +15 -10
  25. package/dist/chunks/{numeric-presentation-VhMUHfrJ.js → numeric-presentation-LvnNY5Ma.js} +68 -68
  26. package/dist/chunks/pivot-header-presentation-D5v8uyjj.js +618 -0
  27. package/dist/chunks/{pivot-result-identity-BzUQiCEV.js → pivot-result-identity-CY__BuwI.js} +1 -1
  28. package/dist/chunks/{pivot-result-lifecycle-BFO354lk.js → pivot-result-lifecycle-BWrPhlGT.js} +259 -204
  29. package/dist/chunks/{raw-temporal-7bFbXd2a.js → raw-temporal-CdnA_OXJ.js} +10 -10
  30. package/dist/chunks/{raw-temporal-contract-BQZIJ1fn.js → raw-temporal-contract-Bc9z83t-.js} +1 -1
  31. package/dist/chunks/relative-date-DAF9J7mt.js +456 -0
  32. package/dist/chunks/report-preferences-dialog-D3hxu4sE.js +1231 -0
  33. package/dist/chunks/{report-runtime-context-CxIoGyNM.js → report-runtime-context-CtaGGlit.js} +1 -1
  34. package/dist/chunks/{selection-reducer-CvCBQbl2.js → selection-reducer-C7Um5XN-.js} +3 -3
  35. package/dist/chunks/semantic-format-BjBMOSoo.js +192 -0
  36. package/dist/chunks/{index-DYOaHuLS.js → semaphor-ready-indicator-D46I_4g7.js} +145070 -146854
  37. package/dist/chunks/slider-B6LELqx6.js +876 -0
  38. package/dist/chunks/{source-entity-resolution-Bzefiive.js → source-entity-resolution-Bde29mqE.js} +25 -25
  39. package/dist/chunks/{switch-CWPcwAZ4.js → switch-_7uBAbYx.js} +7950 -8545
  40. package/dist/chunks/{temporal-bucket-PcLFSYWX.js → temporal-bucket-DlFuhCnT.js} +6 -6
  41. package/dist/chunks/{temporal-bucket-contract-DTLDRzgV.js → temporal-bucket-contract-C6lUGPS3.js} +1 -1
  42. package/dist/chunks/temporal-input-presentation-DyMWCZYh.js +195 -0
  43. package/dist/chunks/{token-types-BC6RcUY8.js → token-types-UjyNz95-.js} +1 -1
  44. package/dist/chunks/{validators-CsdOtZI6.js → validators-CQcG0EPN.js} +852 -731
  45. package/dist/chunks/zoned-wall-clock-BkxV9jS2.js +46 -0
  46. package/dist/dashboard/index.js +1 -1
  47. package/dist/dashboard-authoring/index.js +138 -137
  48. package/dist/data-app-sdk/index.js +30 -29
  49. package/dist/data-app-sdk-adapters/index.js +23 -22
  50. package/dist/data-app-sdk-validation/index.js +27 -26
  51. package/dist/format-utils/index.js +247 -329
  52. package/dist/index.js +435 -246
  53. package/dist/report-runtime-context/index.js +2 -2
  54. package/dist/style.css +1 -1
  55. package/dist/surfboard/index.js +4 -5
  56. package/dist/types/briefings/index.d.ts +3 -0
  57. package/dist/types/components/dashboard/dashboard-container.d.ts +1 -1
  58. package/dist/types/components/dashboard/sheet/layout-change-guard.d.ts +1 -1
  59. package/dist/types/components/dashboard/sheet/sheet-layout.d.ts +1 -1
  60. package/dist/types/components/editor/editor-main/text-card.d.ts +1 -1
  61. package/dist/types/components/editor/editor.d.ts +1 -1
  62. package/dist/types/components/explorer/filters/card-date-filter.d.ts +13 -5
  63. package/dist/types/components/explorer/filters/card-date-selection.d.ts +28 -0
  64. package/dist/types/components/providers/semaphor-context-provider.d.ts +1 -1
  65. package/dist/types/components/providers/theme-provider-context.d.ts +1 -1
  66. package/dist/types/components/providers/theme-provider.d.ts +1 -1
  67. package/dist/types/components/shared/unsaved-changes/use-pristine-snapshot-initializer.d.ts +1 -1
  68. package/dist/types/components/sharing-and-management/dashboard-actions-menu.d.ts +1 -1
  69. package/dist/types/components/sharing-and-management/hooks/use-resource-management.d.ts +0 -1
  70. package/dist/types/components/surfboard/dashboard-plus.d.ts +1 -1
  71. package/dist/types/components/surfboard/download-settings-dialog.d.ts +8 -0
  72. package/dist/types/components/surfboard/filter/types.d.ts +8 -29
  73. package/dist/types/components/surfboard/filter/use-dashboard-filter-mapping-popover.d.ts +5 -1
  74. package/dist/types/components/ui-custom/date-range-picker.d.ts +18 -2
  75. package/dist/types/components/ui-custom/date-range-presets.d.ts +8 -21
  76. package/dist/types/components/ui-custom/report-calendar.d.ts +18 -0
  77. package/dist/types/components/visual/aggregated-table/utils/export-utils.d.ts +3 -5
  78. package/dist/types/components/visual/column-display-utils.d.ts +1 -1
  79. package/dist/types/components/visual/data-table/data-table-toolbar.d.ts +1 -1
  80. package/dist/types/components/visual/kpi-visual/kpi-utils.d.ts +1 -1
  81. package/dist/types/components/visual/pivot-table/utils/pivot-table-export-utils.d.ts +3 -1
  82. package/dist/types/components/visual/settings/color-format.d.ts +1 -1
  83. package/dist/types/components/visual/visual-utils.d.ts +1 -1
  84. package/dist/types/index.js +5 -5
  85. package/dist/types/lib/actions/data-point-click-action.d.ts +2 -1
  86. package/dist/types/lib/api/exports-api.d.ts +3 -0
  87. package/dist/types/lib/csv-download.d.ts +9 -0
  88. package/dist/types/lib/csv-encoding-options.d.ts +6 -0
  89. package/dist/types/lib/dashboard/normalize-dashboard-for-dirty-check.d.ts +1 -1
  90. package/dist/types/lib/dashboard-inputs/dashboard-filter-mapping-storage-transition.d.ts +2 -1
  91. package/dist/types/lib/dashboard-navigation/build-carried-click-context.d.ts +0 -1
  92. package/dist/types/lib/document/document-input-runtime.d.ts +2 -1
  93. package/dist/types/lib/export-utils.d.ts +17 -15
  94. package/dist/types/lib/hooks/explorer/use-filter-builder.d.ts +2 -2
  95. package/dist/types/lib/hooks/explorer/use-schemas.d.ts +1 -1
  96. package/dist/types/lib/hooks/use-dashboard.d.ts +2 -2
  97. package/dist/types/lib/hooks/use-relative-date-summarizer.d.ts +7 -0
  98. package/dist/types/lib/interactions/get-click-context-from-chartjs.d.ts +1 -2
  99. package/dist/types/lib/matrix-table/matrix-application-adapter.d.ts +3 -2
  100. package/dist/types/lib/matrix-table/matrix-card-adapter.d.ts +1 -1
  101. package/dist/types/lib/matrix-table/matrix-card-draft.d.ts +1 -1
  102. package/dist/types/lib/matrix-table/matrix-dataset-history.d.ts +47 -0
  103. package/dist/types/lib/matrix-table/matrix-delivery.d.ts +7 -3
  104. package/dist/types/lib/matrix-table/matrix-execution-context.d.ts +2 -0
  105. package/dist/types/lib/matrix-table/matrix-query-transport.d.ts +4 -1
  106. package/dist/types/lib/matrix-table/matrix-runtime-types.d.ts +105 -4
  107. package/dist/types/lib/matrix-table/matrix-runtime.d.ts +43 -2
  108. package/dist/types/lib/matrix-table/use-matrix.d.ts +6 -0
  109. package/dist/types/lib/query-context/build-card-query-context.d.ts +5 -1
  110. package/dist/types/lib/query-context/build-dashboard-card-query-contract.d.ts +0 -1
  111. package/dist/types/lib/query-context/build-global-date-comparison-context.d.ts +1 -2
  112. package/dist/types/lib/query-context/compile-dashboard-card-filters.d.ts +1 -2
  113. package/dist/types/lib/query-context/dashboard-card-query-key.d.ts +10 -0
  114. package/dist/types/lib/query-context/query-auth-scope.d.ts +5 -0
  115. package/dist/types/lib/stores/dashboard-store.d.ts +9 -4
  116. package/dist/types/lib/stores/editor-store.d.ts +1 -2
  117. package/dist/types/lib/stores/table-actions.d.ts +2 -1
  118. package/dist/types/lib/temporal-filter/temporal-filter-utils.d.ts +9 -2
  119. package/dist/types/lib/types/common-types.d.ts +5 -0
  120. package/dist/types/lib/types/explorer-types.d.ts +14 -0
  121. package/dist/types/lib/types/token-types.d.ts +0 -13
  122. package/dist/types/lib/utils/card-definition.d.ts +1 -1
  123. package/dist/types/lib/utils/date-timezone-utils.d.ts +4 -46
  124. package/dist/types/lib/utils/filter-default-value-utils.d.ts +8 -2
  125. package/dist/types/lib/utils/inline-filter-utils.d.ts +3 -2
  126. package/dist/types/lib/utils/relative-date-description.d.ts +38 -0
  127. package/dist/types/lib/utils.d.ts +0 -2
  128. package/dist/types/shared/analytics-protocol/contracts.d.ts +10 -7
  129. package/dist/types/shared/analytics-protocol/index.d.ts +12 -1
  130. package/dist/types/shared/analytics-protocol/matrix-definition-contract.d.ts +20 -20
  131. package/dist/types/shared/analytics-protocol/matrix-operation-contract.d.ts +10 -10
  132. package/dist/types/shared/analytics-protocol/matrix-operation-request.d.ts +8 -8
  133. package/dist/types/shared/analytics-protocol/matrix-window-contract.d.ts +51 -5
  134. package/dist/types/shared/analytics-protocol/metric-comparison.d.ts +9 -3
  135. package/dist/types/shared/analytics-protocol/operation-temporal-state.d.ts +64 -0
  136. package/dist/types/shared/analytics-protocol/relative-date-filter.d.ts +61 -0
  137. package/dist/types/shared/analytics-protocol/relative-date-label.d.ts +20 -0
  138. package/dist/types/shared/analytics-protocol/runtime-schemas.d.ts +0 -2
  139. package/dist/types/shared/analytics-protocol/time-window-schema.d.ts +314 -0
  140. package/dist/types/shared/analytics-protocol/time-window.d.ts +13 -0
  141. package/dist/types/shared/dashboard-authoring/matrix-delivery.d.ts +8 -4
  142. package/dist/types/shared/format-utils/exporters/csv-utils.d.ts +46 -15
  143. package/dist/types/shared/format-utils/exporters/index.d.ts +2 -3
  144. package/dist/types/shared/format-utils/flat-table-export-totals.d.ts +2 -1
  145. package/dist/types/shared/format-utils/matrix-export-presentation.d.ts +2 -2
  146. package/dist/types/shared/format-utils/types/format-types.d.ts +0 -42
  147. package/dist/types/shared/temporal/calendar-periods.d.ts +56 -0
  148. package/dist/types/shared/temporal/index.d.ts +5 -0
  149. package/dist/types/shared/temporal/relative-date.d.ts +21 -0
  150. package/dist/types/shared/temporal/temporal-parity-fixtures.d.ts +73 -0
  151. package/dist/types/shared/temporal/time-window-periods.d.ts +21 -0
  152. package/dist/types/shared/temporal/zoned-wall-clock.d.ts +23 -0
  153. package/package.json +2 -17
  154. package/src/data-app-sdk/README.md +6 -3
  155. package/dist/chunks/dashboard-date-comparison-definition-BqNhECUr.js +0 -183
  156. package/dist/chunks/dashboard-json-QEoU-mx4.js +0 -75
  157. package/dist/chunks/editor-action-buttons-B9VRW3Bh.js +0 -2019
  158. package/dist/chunks/matrix-formatter-WBgtebUT.js +0 -341
  159. package/dist/chunks/matrix-operation-contract-D32U2CSw.js +0 -1802
  160. package/dist/chunks/mouse-pointer-2-BZvGk45-.js +0 -19
  161. package/dist/chunks/pivot-header-presentation-CGtudHo7.js +0 -661
  162. package/dist/chunks/report-preferences-dialog-BLaFmlE2.js +0 -723
  163. package/dist/chunks/temporal-input-presentation-2RJrvmYL.js +0 -222
  164. package/dist/chunks/update-policy-DhAUtiC8.js +0 -913
  165. package/dist/data-app-builder/index.js +0 -3666
  166. package/dist/data-app-builder-browser-runtime/index.js +0 -8
  167. package/dist/data-app-codegen/index.js +0 -22
  168. package/dist/data-app-codegen-node/index.js +0 -1807
  169. package/dist/types/components/data-app-runtime/published-data-app-runtime.d.ts +0 -7
  170. package/dist/types/components/surfboard/json-to-csv.d.ts +0 -7
  171. package/dist/types/components/visual/data-table/utils/export-utils.d.ts +0 -31
  172. package/dist/types/data-app-builder/browser-runtime.d.ts +0 -174
  173. package/dist/types/data-app-builder/constants.d.ts +0 -14
  174. package/dist/types/data-app-builder/data-app-builder.d.ts +0 -14
  175. package/dist/types/data-app-builder/index.d.ts +0 -1
  176. package/dist/types/data-app-builder/lib/api.d.ts +0 -36
  177. package/dist/types/data-app-builder/lib/context-select.d.ts +0 -3
  178. package/dist/types/data-app-builder/lib/diagnostics.d.ts +0 -12
  179. package/dist/types/data-app-builder/lib/file-tree.d.ts +0 -2
  180. package/dist/types/data-app-builder/types.d.ts +0 -558
  181. package/dist/types/data-app-builder-browser-runtime.d.ts +0 -2
  182. package/dist/types/data-app-builder.d.ts +0 -2
  183. package/dist/types/data-app-codegen/generate-contract.d.ts +0 -26
  184. package/dist/types/data-app-codegen/generated-contract-files.d.ts +0 -7
  185. package/dist/types/data-app-codegen/generated-contract-validation.d.ts +0 -13
  186. package/dist/types/data-app-codegen/index.d.ts +0 -6
  187. package/dist/types/data-app-codegen/live-execution.d.ts +0 -42
  188. package/dist/types/data-app-codegen/node.d.ts +0 -2
  189. package/dist/types/data-app-codegen/update-policy.d.ts +0 -25
  190. package/dist/types/data-app-codegen/validation.d.ts +0 -8
  191. package/dist/types/data-app-codegen-node.d.ts +0 -2
  192. package/dist/types/data-app-codegen.d.ts +0 -2
  193. package/dist/types/lib/encrypt-utils.d.ts +0 -9
  194. package/dist/types/shared/analytics-protocol/data-app-codegen-summary.d.ts +0 -418
  195. package/dist/types/shared/format-utils/exporters/pivot-exporter.d.ts +0 -13
  196. package/dist/types/shared/format-utils/exporters/table-exporter.d.ts +0 -10
@@ -101,8 +101,12 @@ export type DashboardStore = {
101
101
  cardViewState: CardViewStateMap;
102
102
  /** Session-only server pagination, attached to the query identity that owns each page. */
103
103
  dashboardCardPagination: Record<string, DashboardCardPaginationState>;
104
- /** Fixed execution clock from a strict dashboard input replay snapshot. */
105
- dashboardInputReferenceTime?: string;
104
+ /**
105
+ * When the replayed input snapshot was generated, for a document's
106
+ * "Generated at" text only. Queries never read it: a print render's
107
+ * instant comes from its pinned calendar (analytics kernel K15).
108
+ */
109
+ dashboardInputGeneratedAt?: string;
106
110
  /**
107
111
  * Set when a PDF render's sheet has applicable inputs that were never
108
112
  * captured. The sheet must not print; DashboardTabs renders the reason.
@@ -205,14 +209,14 @@ type Actions = {
205
209
  setDashboard: (dashboard: TDashboard, options?: {
206
210
  semanticExecutionPayload?: SemanticExecutionPayload;
207
211
  dashboardInputValues?: DashboardInputValues;
208
- dashboardInputReferenceTime?: string;
212
+ dashboardInputGeneratedAt?: string;
209
213
  reportContext?: ReportRuntimeContext;
210
214
  }) => void;
211
215
  setDashboardWithFilterValues: (dashboard: TDashboard, filterValues: TFilterValue[], runtimeOverrides?: Record<string, unknown>, options?: {
212
216
  selectedSheetId?: string | null;
213
217
  semanticExecutionPayload?: SemanticExecutionPayload;
214
218
  dashboardInputValues?: DashboardInputValues;
215
- dashboardInputReferenceTime?: string;
219
+ dashboardInputGeneratedAt?: string;
216
220
  /** Drill paths replayed from an execution snapshot. */
217
221
  cardViewState?: CardViewStateMap;
218
222
  transientContexts?: TransientInputContext[];
@@ -226,6 +230,7 @@ type Actions = {
226
230
  setDashboardTheme: (theme: 'light' | 'dark' | 'system') => void;
227
231
  setDashboardTitle: (title: string) => void;
228
232
  setDashboardDescription: (description: string) => void;
233
+ setDashboardExportDefaults: (exportDefaults: TDashboard['exportDefaults']) => void;
229
234
  setSheets: (sheets: TSheet[]) => void;
230
235
  addSheet: (sheet: TSheet) => void;
231
236
  duplicateSheet: (sheetId: string) => string | null;
@@ -1,7 +1,6 @@
1
- import { ColorRange, TCard, TCardPreferences, TCustomCardPreferences, TFrame, TLegendOptions, AggregateCalc, SqlGen, ControlDefinition } from '../types/common-types.js';
1
+ import { ColorRange, TCard, TCardPreferences, TCustomCardPreferences, TFrame, TLegendOptions, AIScopeTable, AggregateCalc, SqlGen, ControlDefinition } from '../types/common-types.js';
2
2
  import { TFilterValue } from '../../components/surfboard/filter/types.js';
3
3
  import { TChartType } from '../charts/types.js';
4
- import { AIScopeTable } from '../../components/index.js';
5
4
  import { FilterByColumn, OldFilterValue, GroupByColumn, MetricColumn, OrderBy, QueryConfig } from '../types/query-types.js';
6
5
  import { TableActions } from './table-actions.js';
7
6
  import { CardConfig, QueryColumnKeyMap } from '../types/explorer-types.js';
@@ -1,6 +1,7 @@
1
1
  import { PersistedColumnSettingsMap } from '../../components/visual/data-table/types/data-table.js';
2
2
  import { ColumnSizingState } from '@tanstack/react-table';
3
- import { EditorStore, TCard } from '../../components/index.js';
3
+ import { EditorStore } from './editor-store.js';
4
+ import { TCard } from '../types/common-types.js';
4
5
  import { TableBaseFormatting, TableConditionalFormatting } from '../table-formatting/index.js';
5
6
  export declare const EMPTY_COLUMN_SETTINGS: PersistedColumnSettingsMap;
6
7
  export declare const EMPTY_COLUMN_VISIBILITY: Record<string, boolean>;
@@ -31,11 +31,18 @@ export declare function formatTimeInTimezone(date: Date, timezone: string): stri
31
31
  export declare function composeDateTimeInTimezone(date: Date, time: string, timezone: string, options?: {
32
32
  boundary?: 'start' | 'end';
33
33
  }): Date | null;
34
- export declare function normalizeDateFilterRange(date: DateRange, options?: {
34
+ /**
35
+ * The range a date filter stores. At day precision, a single day (a start
36
+ * with no end, or an end equal to the start) becomes that whole calendar day
37
+ * in the report timezone, ending its last millisecond: 23 or 25 hours on a
38
+ * daylight-saving day, and never the next day's midnight, which an inclusive
39
+ * range would count (on a date column, as the whole next day).
40
+ */
41
+ export declare function normalizeDateFilterRange(date: DateRange, options: {
35
42
  temporalPrecision?: TemporalPrecision;
43
+ timezone: string;
36
44
  }): {
37
45
  from?: Date;
38
46
  to?: Date;
39
47
  values: [Date | string, Date | string] | [Date | string];
40
48
  };
41
- export declare function resolveSubDayRelativeDateRange(meta: RelativeDateFilter, anchor?: Date): [Date, Date] | null;
@@ -15,6 +15,7 @@ import { DashboardAIContext } from './assistant-types.js';
15
15
  import { CardInteractionConfig, InteractionTargetOverride } from './interaction-types.js';
16
16
  import { SemanticExecutionPayload } from './semantic-runtime-types.js';
17
17
  import { ReportRuntimeContext } from '../../shared/report-runtime-context/index.js';
18
+ import { CsvEncoding } from '../../shared/format-utils/exporters/csv-utils.js';
18
19
  import { PresentationExecutionSnapshot, TemporalInputPresentation } from '../../shared/format-utils/index.js';
19
20
  import { JSX } from 'react';
20
21
  export type { DashboardFilterApplication, DashboardFilterBoundCardApplication, DashboardFilterCardApplication, DashboardFilterExcludedCardApplication, DashboardFilterTarget, DashboardFilterTargetField, DashboardFilterTargetSource, DashboardFilterOptionSource, } from '../../shared/dashboard-authoring/dashboard-filter-mapping-types.js';
@@ -1573,6 +1574,10 @@ export type TDashboard = {
1573
1574
  /** Dashboard creation sets 'on'. Absent resolves to 'off', so existing dashboards do not change. */
1574
1575
  clickToFilter: 'on' | 'off';
1575
1576
  };
1577
+ exportDefaults?: {
1578
+ /** Absent resolves to DEFAULT_CSV_ENCODING, so existing dashboards do not change. */
1579
+ csvEncoding?: CsvEncoding;
1580
+ };
1576
1581
  aiContext?: DashboardAIContext;
1577
1582
  summary?: {
1578
1583
  enabled?: boolean;
@@ -2,6 +2,7 @@ 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
4
  import { TemporalResultOwner } from '../../shared/dashboard-authoring/index.js';
5
+ import { RelativeDateFilter } from '../../shared/analytics-protocol/relative-date-filter.js';
5
6
  /**
6
7
  * Special entity name marker for calculated fields.
7
8
  *
@@ -464,6 +465,19 @@ export interface FilterCondition {
464
465
  label?: string;
465
466
  /** Governed meaning for a canonical grouped-temporal scalar. */
466
467
  temporalBucket?: TemporalBucketMetadata;
468
+ /**
469
+ * Relative date window ("This month"). When present it is authoritative:
470
+ * the server resolves it on every run and `value` only keeps the range seen
471
+ * when it was saved. Valid only with `between` and `not between`.
472
+ */
473
+ relativeMeta?: RelativeDateFilter;
474
+ /**
475
+ * "Equals the latest value of this field" (analytics kernel K13). With `=`
476
+ * on a date or timestamp field only. The server resolves it on every run
477
+ * through the field's data anchor; `value` only keeps the value seen when
478
+ * it was saved.
479
+ */
480
+ latestValue?: true;
467
481
  }
468
482
  export interface FilterGroup {
469
483
  id: string;
@@ -67,10 +67,6 @@ export type TokenSecurityPolicy = {
67
67
  * UI and behavior configuration for the embedded dashboard.
68
68
  */
69
69
  export type UIConfig = {
70
- /**
71
- * Enables self-service editing by the end user. Legacy field. Use config.allowEdit instead.
72
- */
73
- allowEdit?: boolean;
74
70
  /**
75
71
  * Enables advanced mode features in the dashboard.
76
72
  * Defaults to true unless explicitly disabled.
@@ -121,7 +117,6 @@ export type UIConfig = {
121
117
  features: {
122
118
  dashboardAssistant: boolean;
123
119
  dashboardAiAuthoring: boolean;
124
- dataAppBuilder: boolean;
125
120
  analyticalBriefings: boolean;
126
121
  aiWritingHelpers: boolean;
127
122
  };
@@ -202,10 +197,6 @@ export type TokenRequest = {
202
197
  * Display name of the end user.
203
198
  */
204
199
  displayName?: string;
205
- /**
206
- * Enables self-service editing by the end user.
207
- */
208
- allowEdit?: boolean;
209
200
  /**
210
201
  * Schema level security policy. The schema name for the tenant.
211
202
  */
@@ -274,10 +265,6 @@ export type TokenProps = {
274
265
  * Display name of the end user.
275
266
  */
276
267
  displayName?: string;
277
- /**
278
- * Enables self-service editing by the end user.
279
- */
280
- allowEdit?: boolean;
281
268
  /**
282
269
  * Schema level security policy. The schema name for the tenant.
283
270
  */
@@ -326,7 +326,7 @@ export declare function getCardDefinition(card: DefinitionCard, catalog?: Matrix
326
326
  levelId: string;
327
327
  axis: "columns" | "rows";
328
328
  direction: "asc" | "desc";
329
- nulls: "first" | "last";
329
+ nulls: "last" | "first";
330
330
  }[];
331
331
  rankings: readonly import('../../shared/analytics-protocol/matrix-definition-contract.js').MatrixRanking[];
332
332
  filters?: import('../types/explorer-types.js').FilterGroup | undefined;
@@ -1,4 +1,4 @@
1
- import { CalendarContext, WeekStart } from '../types/token-types.js';
1
+ import { CalendarContext } from '../types/token-types.js';
2
2
  /**
3
3
  * Gets the start of day (00:00:00.000) for a date in the specified timezone.
4
4
  * This ensures that when the Date is serialized to UTC, it represents the correct day boundary.
@@ -18,7 +18,9 @@ import { CalendarContext, WeekStart } from '../types/token-types.js';
18
18
  */
19
19
  export declare const startOfDayInTimezone: (date: Date, timezone: string) => Date;
20
20
  /**
21
- * Gets the end of day (23:59:59.999) for a date in the specified timezone.
21
+ * Gets the last millisecond of the day for a date in the specified timezone:
22
+ * 23:59:59.999, or the instant before the next day starts on a day that
23
+ * ends inside a daylight-saving change.
22
24
  * This ensures that when the Date is serialized to UTC, it represents the correct day boundary.
23
25
  *
24
26
  * @param date - The date to get end of day for
@@ -49,42 +51,6 @@ export declare const endOfDayInTimezone: (date: Date, timezone: string) => Date;
49
51
  * `getEffectiveTimezone` does.
50
52
  */
51
53
  export declare const parseFilterDateValue: (value: unknown, timezone: string | null | undefined, bound?: "start" | "end") => Date | undefined;
52
- /**
53
- * Gets the start of week (midnight) for a date in the specified timezone.
54
- *
55
- * @param date - The date to get start of week for
56
- * @param timezone - The timezone to use (e.g., 'America/Los_Angeles')
57
- * @param weekStartsOn - Day the week starts on (0=Sunday, 1=Monday). Can also pass CalendarContext.
58
- * @returns A Date object representing midnight on the first day of the week
59
- *
60
- * @example
61
- * // With weekStartsOn number
62
- * startOfWeekInTimezone(new Date(), 'America/Chicago', 0) // Sunday start
63
- *
64
- * // With CalendarContext
65
- * startOfWeekInTimezone(new Date(), 'America/Chicago', { tz: 'America/Chicago', weekStart: 0, anchor: 'now' })
66
- */
67
- export declare const startOfWeekInTimezone: (date: Date, timezone: string, weekStartsOn?: WeekStart | CalendarContext) => Date;
68
- /**
69
- * Gets the end of week (23:59:59.999) for a date in the specified timezone.
70
- *
71
- * @param date - The date to get end of week for
72
- * @param timezone - The timezone to use (e.g., 'America/Los_Angeles')
73
- * @param weekStartsOn - Day the week starts on (0=Sunday, 1=Monday). Can also pass CalendarContext.
74
- * @returns A Date object representing the last moment of the last day of the week
75
- */
76
- export declare const endOfWeekInTimezone: (date: Date, timezone: string, weekStartsOn?: WeekStart | CalendarContext) => Date;
77
- export declare const startOfMonthInTimezone: (date: Date, timezone: string) => Date;
78
- export declare const endOfMonthInTimezone: (date: Date, timezone: string) => Date;
79
- export declare const startOfQuarterInTimezone: (date: Date, timezone: string) => Date;
80
- export declare const endOfQuarterInTimezone: (date: Date, timezone: string) => Date;
81
- export declare const startOfYearInTimezone: (date: Date, timezone: string) => Date;
82
- export declare const endOfYearInTimezone: (date: Date, timezone: string) => Date;
83
- export declare const shiftDateByDaysInTimezone: (date: Date, timezone: string, days: number) => Date;
84
- export declare const shiftDateByWeeksInTimezone: (date: Date, timezone: string, weeks: number) => Date;
85
- export declare const shiftDateByMonthsInTimezone: (date: Date, timezone: string, months: number) => Date;
86
- export declare const shiftDateByQuartersInTimezone: (date: Date, timezone: string, quarters: number) => Date;
87
- export declare const shiftDateByYearsInTimezone: (date: Date, timezone: string, years: number) => Date;
88
54
  /**
89
55
  * Resolves the effective timezone.
90
56
  *
@@ -111,11 +77,3 @@ export declare const shiftDateByYearsInTimezone: (date: Date, timezone: string,
111
77
  * getEffectiveTimezone() // Returns browser's timezone (e.g., 'America/Los_Angeles')
112
78
  */
113
79
  export declare const getEffectiveTimezone: (timezoneOrContext?: string | CalendarContext | null) => string;
114
- /**
115
- * Resolves the effective weekStart from CalendarContext.
116
- *
117
- * @param calendarContext - Optional CalendarContext
118
- * @returns The week start day (0=Sunday, 1=Monday)
119
- * @default 1 (Monday) for backward compatibility with ISO standard
120
- */
121
- export declare const getEffectiveWeekStart: (calendarContext?: CalendarContext | null) => WeekStart;
@@ -1,12 +1,18 @@
1
1
  import { TFilter, TFilterValue } from '../../components/surfboard/filter/types.js';
2
2
  import { TInlineFilter } from '../types/common-types.js';
3
+ import { CalendarContext } from '../../shared/report-runtime-context/index.js';
4
+ /**
5
+ * The report calendar defaults resolve in: its timezone, or the calendar
6
+ * with its week start too, so a week default matches the server's week.
7
+ */
8
+ export type DefaultsCalendar = string | Pick<CalendarContext, 'tz' | 'weekStart'>;
3
9
  type DefaultBackedFilter = Pick<TFilter, 'id' | 'column' | 'operation' | 'dataType' | 'nativeDataType' | 'dateSelectionMode' | 'defaultValues' | 'defaultDateFilter' | 'fieldMeta' | 'semanticContext'> & Partial<Pick<TInlineFilter, 'id' | 'column' | 'operation' | 'dataType' | 'nativeDataType' | 'dateSelectionMode' | 'defaultValues' | 'defaultDateFilter' | 'fieldMeta' | 'semanticContext'>>;
4
10
  /**
5
11
  * Converts a filter's default configuration into an active runtime filter value.
6
12
  * Returns undefined when no defaults are configured.
7
13
  */
8
- export declare function buildFilterValueFromDefaults(filter: DefaultBackedFilter, timezone?: string): TFilterValue | undefined;
9
- export declare function buildFilterValuesFromDefaults(filters: DefaultBackedFilter[] | undefined, timezone?: string): TFilterValue[];
14
+ export declare function buildFilterValueFromDefaults(filter: DefaultBackedFilter, calendar?: DefaultsCalendar | null): TFilterValue | undefined;
15
+ export declare function buildFilterValuesFromDefaults(filters: DefaultBackedFilter[] | undefined, calendar?: DefaultsCalendar): TFilterValue[];
10
16
  export declare function isCompatibleFilterValue(filter: Pick<TFilter, 'id' | 'operation' | 'dataType'>, filterValue: TFilterValue): boolean;
11
17
  export declare function filterCompatibleFilterValues(filters: TFilter[] | undefined, filterValues: TFilterValue[] | undefined): TFilterValue[];
12
18
  export declare function mergeFilterValueLayers(baseValues: TFilterValue[], overrideValues: TFilterValue[]): TFilterValue[];
@@ -1,5 +1,6 @@
1
1
  import { TDashboard } from '../types/common-types.js';
2
2
  import { TFilterValue } from '../../components/surfboard/filter/types.js';
3
+ import { DefaultsCalendar } from './filter-default-value-utils.js';
3
4
  /**
4
5
  * Hydrate inline filter defaults for all cards in the dashboard.
5
6
  * Returns a map of cardId → TFilterValue[] for runtime-only storage.
@@ -9,7 +10,7 @@ import { TFilterValue } from '../../components/surfboard/filter/types.js';
9
10
  * function only owns traversal and card-scoped runtime storage.
10
11
  *
11
12
  * @param dashboard - The dashboard to extract inline filter defaults from
12
- * @param timezone - Optional timezone for date calculations (defaults to browser timezone)
13
+ * @param calendar - The report calendar (or its timezone) for date defaults (defaults to the browser timezone)
13
14
  * @returns Map of cardId to array of filter values
14
15
  */
15
- export declare function computeInlineFilterDefaults(dashboard: TDashboard, timezone?: string): Record<string, TFilterValue[]>;
16
+ export declare function computeInlineFilterDefaults(dashboard: TDashboard, calendar?: DefaultsCalendar): Record<string, TFilterValue[]>;
@@ -0,0 +1,38 @@
1
+ import { RelativeDateFilter } from '../../shared/analytics-protocol/relative-date-filter.js';
2
+ import { CalendarContext } from '../../shared/report-runtime-context/index.js';
3
+ import { ResolvedTemporalValueFormatPreferences } from '../../shared/value-format-preferences/index.js';
4
+ export type RelativeDateDescription = {
5
+ label: string;
6
+ /** The window as of the calendar's anchor, or null when the browser can't know it. */
7
+ range: {
8
+ start: Date;
9
+ end: Date;
10
+ } | null;
11
+ };
12
+ export type RelativeDateCalendar = Pick<CalendarContext, 'tz' | 'weekStart' | 'anchor'>;
13
+ export declare const RELATIVE_DATES_FOLLOW_CALENDAR = "Dates follow your calendar each time the card runs.";
14
+ /** A window that counts back from the latest data has no dates the browser can know. */
15
+ export declare const RELATIVE_DATES_FOLLOW_DATA = "Dates count back from the latest data each time the card runs.";
16
+ /** What a latest-value condition reads as (analytics kernel K13). */
17
+ export declare const LATEST_VALUE_LABEL = "Latest value";
18
+ /** Display-only description of a relative date; the server resolves the real window. */
19
+ export declare function describeRelativeDate(relative: RelativeDateFilter, calendar: RelativeDateCalendar): RelativeDateDescription;
20
+ /** What a relative date reads as: its label, and its dates when known. */
21
+ export type RelativeDateSummary = {
22
+ label: string;
23
+ /** The current window as the shared date-input presenter writes it. */
24
+ dates: string | null;
25
+ /** The current window itself, when `dates` is known. */
26
+ range: {
27
+ start: Date;
28
+ end: Date;
29
+ } | null;
30
+ };
31
+ /**
32
+ * The label and today's dates of a relative date, written in the viewer's
33
+ * date preferences: the same text a text card shows for a date filter.
34
+ */
35
+ export declare function summarizeRelativeDate(relative: RelativeDateFilter, context: {
36
+ calendar: RelativeDateCalendar;
37
+ preferences: ResolvedTemporalValueFormatPreferences;
38
+ }): RelativeDateSummary;
@@ -24,9 +24,7 @@ export declare function getRequestErrorSql(error: unknown): string | undefined;
24
24
  export declare function getRequestErrorFromResponse(response: Response): Promise<RequestError>;
25
25
  export declare function requestJsonRegular(url: string, authToken: string, method?: string, data?: unknown, signal?: AbortSignal): Promise<any>;
26
26
  export declare function getRequest(url: string, authToken: string, params?: {}, signal?: AbortSignal): Promise<any>;
27
- export declare function postRequestEncrypted(url: string, authToken: string, data?: {}, method?: string): Promise<any>;
28
27
  export declare function postRequestRegular(url: string, authToken: string, data?: {}, method?: string): Promise<any>;
29
- export declare const postRequest: typeof postRequestRegular;
30
28
  export declare function getTenantAndEndUserId(accessToken: string | undefined): {
31
29
  tenantId: string;
32
30
  endUserId: string;
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { matrixAnalyticalIntentSchema } from './matrix-definition-contract.js';
3
3
  import { matrixResultSchema } from './matrix-window-contract.js';
4
4
  import { CalendarContext } from '../report-runtime-context/index.js';
5
+ import { DateUnit } from './relative-date-filter.js';
5
6
  export type SemaphorProtocolVersion = 1;
6
7
  export type SemaphorDialect = 'postgres' | 'mysql' | 'mssql' | 'snowflake' | 'clickhouse' | 'bigquery' | 'redshift' | 'duckdb' | 'sqlite' | 'unknown';
7
8
  export type SemaphorSourceLevel = 'database' | 'schema' | 'table';
@@ -351,12 +352,20 @@ export type SemaphorRelativeTimeWindow = {
351
352
  anchor?: 'now' | 'latest_available';
352
353
  completeness?: 'include_partial' | 'complete_periods';
353
354
  };
355
+ /** A whole calendar period, such as this month or the previous quarter. */
356
+ export type SemaphorCalendarTimeWindow = {
357
+ kind: 'calendar';
358
+ unit: DateUnit;
359
+ period: 'this' | 'previous';
360
+ /** Only with period "this": the period so far, ending at the anchor. */
361
+ toDate?: boolean;
362
+ };
354
363
  export type SemaphorAbsoluteTimeWindow = {
355
364
  kind: 'absolute';
356
365
  start: string;
357
366
  end: string;
358
367
  };
359
- export type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
368
+ export type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorCalendarTimeWindow | SemaphorAbsoluteTimeWindow;
360
369
  export type SemaphorPaginationRequest = {
361
370
  page: number;
362
371
  pageSize: number;
@@ -816,12 +825,6 @@ export type SemaphorOperationIntent = {
816
825
  targetDashboardId?: string;
817
826
  analyticsIntent?: SemaphorAnalyticsIntent;
818
827
  context?: Record<string, unknown>;
819
- } | {
820
- version: SemaphorProtocolVersion;
821
- kind: 'data_app_change';
822
- instruction: string;
823
- analyticsIntent?: SemaphorAnalyticsIntent;
824
- context?: Record<string, unknown>;
825
828
  };
826
829
  export type SemaphorRecoveryToolCall = {
827
830
  name: 'semaphor_get_dataset_schema' | 'semaphor_analyze' | 'semaphor_query_sql_advanced' | string;
@@ -5,7 +5,6 @@ export * from './option-relevance.js';
5
5
  export * from './validators.js';
6
6
  export * from './analyze-result-contract.js';
7
7
  export * from './catalog-field-grounding.js';
8
- export * from './data-app-codegen-summary.js';
9
8
  export * from './runtime-schemas.js';
10
9
  export * from './source-capabilities.js';
11
10
  export * from './catalog-source-address.js';
@@ -21,6 +20,18 @@ export * from './selection-filter-compiler.js';
21
20
  export * from './temporal-context.js';
22
21
  export * from './temporal-bucket-contract.js';
23
22
  export * from './raw-temporal-contract.js';
23
+ export * from './relative-date-filter.js';
24
+ export * from './relative-date-label.js';
25
+ export * from './operation-temporal-state.js';
26
+ /**
27
+ * The saved filter contract, strict: a key outside it (an execution-only
28
+ * field the server adds while it runs a filter) fails to parse, so a save
29
+ * point can prove it saves no run state (temporal predicate contract E2).
30
+ */
31
+ export { filterGroupSchema as savedFilterGroupSchema } from './explorer-input-schemas.js';
32
+ export * from '../temporal/index.js';
33
+ export * from './time-window.js';
34
+ export * from './time-window-schema.js';
24
35
  export * from './scalar-value.js';
25
36
  export * from './matrix-window-contract.js';
26
37
  export * from './matrix-member-presentation.js';
@@ -300,7 +300,7 @@ declare const specShape: z.ZodObject<{
300
300
  levelId: string;
301
301
  axis: "columns" | "rows";
302
302
  direction: "asc" | "desc";
303
- nulls: "first" | "last";
303
+ nulls: "last" | "first";
304
304
  }[];
305
305
  rankings: readonly MatrixRanking[];
306
306
  filters?: FilterGroup | undefined;
@@ -367,7 +367,7 @@ declare const specShape: z.ZodObject<{
367
367
  levelId: string;
368
368
  axis: "columns" | "rows";
369
369
  direction: "asc" | "desc";
370
- nulls: "first" | "last";
370
+ nulls: "last" | "first";
371
371
  }[];
372
372
  rankings: readonly MatrixRanking[];
373
373
  filters?: FilterGroup | undefined;
@@ -507,7 +507,7 @@ declare const authoringSpecShape: z.ZodObject<{
507
507
  levelId: string;
508
508
  axis: "columns" | "rows";
509
509
  direction: "asc" | "desc";
510
- nulls: "first" | "last";
510
+ nulls: "last" | "first";
511
511
  }[];
512
512
  rankings: readonly MatrixRanking[];
513
513
  filters?: FilterGroup | undefined;
@@ -574,7 +574,7 @@ declare const authoringSpecShape: z.ZodObject<{
574
574
  levelId: string;
575
575
  axis: "columns" | "rows";
576
576
  direction: "asc" | "desc";
577
- nulls: "first" | "last";
577
+ nulls: "last" | "first";
578
578
  }[];
579
579
  rankings: readonly MatrixRanking[];
580
580
  filters?: FilterGroup | undefined;
@@ -714,7 +714,7 @@ declare const analyticalIntentShape: z.ZodObject<{
714
714
  levelId: string;
715
715
  axis: "columns" | "rows";
716
716
  direction: "asc" | "desc";
717
- nulls: "first" | "last";
717
+ nulls: "last" | "first";
718
718
  }[];
719
719
  rankings: readonly MatrixRanking[];
720
720
  filters?: FilterGroup | undefined;
@@ -782,7 +782,7 @@ declare const analyticalIntentShape: z.ZodObject<{
782
782
  levelId: string;
783
783
  axis: "columns" | "rows";
784
784
  direction: "asc" | "desc";
785
- nulls: "first" | "last";
785
+ nulls: "last" | "first";
786
786
  }[];
787
787
  rankings: readonly MatrixRanking[];
788
788
  filters?: FilterGroup | undefined;
@@ -3837,7 +3837,7 @@ declare const viewStateShape: z.ZodObject<{
3837
3837
  levelId: string;
3838
3838
  axis: "columns" | "rows";
3839
3839
  direction: "asc" | "desc";
3840
- nulls: "first" | "last";
3840
+ nulls: "last" | "first";
3841
3841
  }[];
3842
3842
  }, {
3843
3843
  columns: {
@@ -3904,7 +3904,7 @@ declare const viewStateShape: z.ZodObject<{
3904
3904
  levelId: string;
3905
3905
  axis: "columns" | "rows";
3906
3906
  direction: "asc" | "desc";
3907
- nulls: "first" | "last";
3907
+ nulls: "last" | "first";
3908
3908
  }[];
3909
3909
  }>;
3910
3910
  type MatrixViewStateSchema = z.ZodEffects<typeof viewStateShape>;
@@ -4200,7 +4200,7 @@ declare const definitionInputShape: z.ZodObject<{
4200
4200
  levelId: string;
4201
4201
  axis: "columns" | "rows";
4202
4202
  direction: "asc" | "desc";
4203
- nulls: "first" | "last";
4203
+ nulls: "last" | "first";
4204
4204
  }[];
4205
4205
  rankings: readonly MatrixRanking[];
4206
4206
  filters?: FilterGroup | undefined;
@@ -4316,7 +4316,7 @@ declare const definitionInputShape: z.ZodObject<{
4316
4316
  levelId: string;
4317
4317
  axis: "columns" | "rows";
4318
4318
  direction: "asc" | "desc";
4319
- nulls: "first" | "last";
4319
+ nulls: "last" | "first";
4320
4320
  }[];
4321
4321
  } | undefined;
4322
4322
  }, {
@@ -4601,7 +4601,7 @@ declare const definitionInputShape: z.ZodObject<{
4601
4601
  levelId: string;
4602
4602
  axis: "columns" | "rows";
4603
4603
  direction: "asc" | "desc";
4604
- nulls: "first" | "last";
4604
+ nulls: "last" | "first";
4605
4605
  }[];
4606
4606
  rankings: readonly MatrixRanking[];
4607
4607
  filters?: FilterGroup | undefined;
@@ -4717,7 +4717,7 @@ declare const definitionInputShape: z.ZodObject<{
4717
4717
  levelId: string;
4718
4718
  axis: "columns" | "rows";
4719
4719
  direction: "asc" | "desc";
4720
- nulls: "first" | "last";
4720
+ nulls: "last" | "first";
4721
4721
  }[];
4722
4722
  } | undefined;
4723
4723
  }>;
@@ -5012,7 +5012,7 @@ declare const configShape: z.ZodObject<{
5012
5012
  levelId: string;
5013
5013
  axis: "columns" | "rows";
5014
5014
  direction: "asc" | "desc";
5015
- nulls: "first" | "last";
5015
+ nulls: "last" | "first";
5016
5016
  }[];
5017
5017
  rankings: readonly MatrixRanking[];
5018
5018
  filters?: FilterGroup | undefined;
@@ -5346,7 +5346,7 @@ declare const configShape: z.ZodObject<{
5346
5346
  levelId: string;
5347
5347
  axis: "columns" | "rows";
5348
5348
  direction: "asc" | "desc";
5349
- nulls: "first" | "last";
5349
+ nulls: "last" | "first";
5350
5350
  }[];
5351
5351
  rankings: readonly MatrixRanking[];
5352
5352
  filters?: FilterGroup | undefined;
@@ -5690,7 +5690,7 @@ declare const authoringConfigShape: z.ZodObject<{
5690
5690
  levelId: string;
5691
5691
  axis: "columns" | "rows";
5692
5692
  direction: "asc" | "desc";
5693
- nulls: "first" | "last";
5693
+ nulls: "last" | "first";
5694
5694
  }[];
5695
5695
  rankings: readonly MatrixRanking[];
5696
5696
  filters?: FilterGroup | undefined;
@@ -6024,7 +6024,7 @@ declare const authoringConfigShape: z.ZodObject<{
6024
6024
  levelId: string;
6025
6025
  axis: "columns" | "rows";
6026
6026
  direction: "asc" | "desc";
6027
- nulls: "first" | "last";
6027
+ nulls: "last" | "first";
6028
6028
  }[];
6029
6029
  rankings: readonly MatrixRanking[];
6030
6030
  filters?: FilterGroup | undefined;
@@ -6464,7 +6464,7 @@ declare const exportRequestShape: z.ZodUnion<[z.ZodObject<{
6464
6464
  levelId: string;
6465
6465
  axis: "columns" | "rows";
6466
6466
  direction: "asc" | "desc";
6467
- nulls: "first" | "last";
6467
+ nulls: "last" | "first";
6468
6468
  }[];
6469
6469
  rankings: readonly MatrixRanking[];
6470
6470
  filters?: FilterGroup | undefined;
@@ -6802,7 +6802,7 @@ declare const exportRequestShape: z.ZodUnion<[z.ZodObject<{
6802
6802
  levelId: string;
6803
6803
  axis: "columns" | "rows";
6804
6804
  direction: "asc" | "desc";
6805
- nulls: "first" | "last";
6805
+ nulls: "last" | "first";
6806
6806
  }[];
6807
6807
  rankings: readonly MatrixRanking[];
6808
6808
  filters?: FilterGroup | undefined;
@@ -7146,7 +7146,7 @@ declare const exportRequestShape: z.ZodUnion<[z.ZodObject<{
7146
7146
  levelId: string;
7147
7147
  axis: "columns" | "rows";
7148
7148
  direction: "asc" | "desc";
7149
- nulls: "first" | "last";
7149
+ nulls: "last" | "first";
7150
7150
  }[];
7151
7151
  rankings: readonly MatrixRanking[];
7152
7152
  filters?: FilterGroup | undefined;
@@ -7439,7 +7439,7 @@ declare const exportRequestShape: z.ZodUnion<[z.ZodObject<{
7439
7439
  levelId: string;
7440
7440
  axis: "columns" | "rows";
7441
7441
  direction: "asc" | "desc";
7442
- nulls: "first" | "last";
7442
+ nulls: "last" | "first";
7443
7443
  }[];
7444
7444
  rankings: readonly MatrixRanking[];
7445
7445
  filters?: FilterGroup | undefined;