react-semaphor 0.1.514 → 0.1.516
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +226 -225
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +4 -4
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +8 -8
- package/dist/chunks/{calculated-field-identity-BiTGmnST.cjs → calculated-field-identity-5bg9oHTw.cjs} +1 -1
- package/dist/chunks/{calculated-field-identity-DnRd4YIY.js → calculated-field-identity-DzJBs2J8.js} +4 -4
- package/dist/chunks/{card-config-utils-B2cDWQqB.js → card-config-utils-Cxnq2R6z.js} +14 -14
- package/dist/chunks/{card-config-utils-CMO4_zVs.cjs → card-config-utils-z86y6tSq.cjs} +1 -1
- package/dist/chunks/column-bands-CU0byntA.cjs +1 -0
- package/dist/chunks/column-bands-RdM-kjDe.js +47 -0
- package/dist/chunks/{dashboard-briefing-launcher-e3s3MuSs.js → dashboard-briefing-launcher-BCEHJ_eD.js} +15 -12
- package/dist/chunks/{dashboard-briefing-launcher-BzPD50QD.cjs → dashboard-briefing-launcher-CjZ4aE34.cjs} +2 -2
- package/dist/chunks/{dashboard-controls-DAOABnks.js → dashboard-controls-DFfit5KH.js} +12 -12
- package/dist/chunks/{dashboard-controls-DQBfOqmC.cjs → dashboard-controls-f9aJ70Zu.cjs} +1 -1
- package/dist/chunks/{dashboard-date-comparison-definition-D7Bl-YAl.js → dashboard-date-comparison-definition-BqNhECUr.js} +6 -6
- package/dist/chunks/{dashboard-date-comparison-definition-C_w-GO_5.cjs → dashboard-date-comparison-definition-Y6JZwpcr.cjs} +1 -1
- package/dist/chunks/{dashboard-json-S5Eq2GAg.js → dashboard-json-DVtcA02f.js} +7 -7
- package/dist/chunks/{dashboard-json-1jZycd5h.cjs → dashboard-json-deqQC-UR.cjs} +1 -1
- package/dist/chunks/edit-dashboard-visual-DK6lSC_p.cjs +172 -0
- package/dist/chunks/{edit-dashboard-visual-Bkm0ciHG.js → edit-dashboard-visual-lJ6rDH3w.js} +4553 -4542
- package/dist/chunks/{editor-action-buttons-Bvv16QA-.js → editor-action-buttons-Bnxxa439.js} +7 -7
- package/dist/chunks/{editor-action-buttons-B2NCSsDw.cjs → editor-action-buttons-CmDaQbPN.cjs} +1 -1
- package/dist/chunks/{field-aggregations-CzuQKtqx.js → field-aggregations-Dl2A3rbV.js} +461 -358
- package/dist/chunks/field-aggregations-pH_3kymD.cjs +1 -0
- package/dist/chunks/{field-dependencies-DIab72rQ.cjs → field-dependencies-EB485TdB.cjs} +1 -1
- package/dist/chunks/{field-dependencies-DXW4jtvJ.js → field-dependencies-v-lJNzC7.js} +1 -1
- package/dist/chunks/{index-nhUr9xBz.js → index-BVVl2JDK.js} +57955 -54696
- package/dist/chunks/{index-CACdoqu3.js → index-C8w91oj4.js} +61 -51
- package/dist/chunks/index-Cw2ypaFl.cjs +1 -0
- package/dist/chunks/index-DfqMtR9S.cjs +4 -0
- package/dist/chunks/index-UNKSfi7s.cjs +1434 -0
- package/dist/chunks/{index-CnGVjyF8.js → index-ylOpKRDu.js} +877 -849
- package/dist/chunks/{matrix-analytical-definition-Ct5Tu8np.cjs → matrix-analytical-definition-BWd159lN.cjs} +1 -1
- package/dist/chunks/{matrix-analytical-definition-BDAK2aEi.js → matrix-analytical-definition-BimC4XIV.js} +1 -1
- package/dist/chunks/{matrix-card-U4c72doZ.cjs → matrix-card-C2RjEYZ8.cjs} +1 -1
- package/dist/chunks/{matrix-card-DOIeTmjh.js → matrix-card-CIlz0Dnp.js} +2 -2
- package/dist/chunks/{matrix-control-sources-FjxGIbqk.cjs → matrix-control-sources-BvEJF7d3.cjs} +1 -1
- package/dist/chunks/{matrix-control-sources-BxKH2yu2.js → matrix-control-sources-KbZe1gj_.js} +51 -51
- package/dist/chunks/{matrix-definition-CBJW_4ii.cjs → matrix-definition-DanUT11P.cjs} +1 -1
- package/dist/chunks/{matrix-definition-I9rHB9zN.js → matrix-definition-E5gXXSTZ.js} +1 -1
- package/dist/chunks/matrix-formatter-BJTO8ky9.cjs +1 -0
- package/dist/chunks/matrix-formatter-CCXNRt3s.js +341 -0
- package/dist/chunks/{matrix-member-presentation-DO1VSqfh.js → matrix-member-presentation-Bw7-JCrr.js} +64 -64
- package/dist/chunks/matrix-member-presentation-DvXDEo0U.cjs +1 -0
- package/dist/chunks/{matrix-operation-contract-DoiWTUbT.cjs → matrix-operation-contract-0RxoU_M3.cjs} +1 -1
- package/dist/chunks/{matrix-operation-contract-D0HfzwZg.js → matrix-operation-contract-D32U2CSw.js} +19 -19
- package/dist/chunks/{metric-comparison-Dqc7_tnW.js → metric-comparison-BphoJ9bq.js} +1 -1
- package/dist/chunks/{metric-comparison-DBQ3EJTz.cjs → metric-comparison-CUmltzpz.cjs} +1 -1
- package/dist/chunks/pivot-header-presentation-BSZhB1g-.js +661 -0
- package/dist/chunks/pivot-header-presentation-EoUS5ze5.cjs +5 -0
- package/dist/chunks/{pivot-result-identity-8M-bZrw9.js → pivot-result-identity-BzUQiCEV.js} +4 -4
- package/dist/chunks/{pivot-result-identity-uTiylUNr.cjs → pivot-result-identity-gquWljbd.cjs} +1 -1
- package/dist/chunks/pivot-result-lifecycle-gl9cBfB-.cjs +1 -0
- package/dist/chunks/{pivot-result-lifecycle-BeOpjAhg.js → pivot-result-lifecycle-kRhiJkzg.js} +208 -149
- package/dist/chunks/{raw-temporal-DrmCX9Wq.js → raw-temporal-BqOfk-xN.js} +471 -361
- package/dist/chunks/{raw-temporal-contract-CFLGwTiI.js → raw-temporal-contract-BQZIJ1fn.js} +1 -1
- package/dist/chunks/{raw-temporal-contract-DECbTuzA.cjs → raw-temporal-contract-CklMVG_1.cjs} +1 -1
- package/dist/chunks/raw-temporal-eJXecCyJ.cjs +1 -0
- package/dist/chunks/{report-preferences-dialog-B2fzQH1T.js → report-preferences-dialog-CHXPEl7v.js} +6 -6
- package/dist/chunks/{report-preferences-dialog-DcLkVqni.cjs → report-preferences-dialog-Cto0vDwI.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-Cs65Mrxj.js → report-runtime-context-CxIoGyNM.js} +1 -1
- package/dist/chunks/{report-runtime-context-DzvHBPxl.cjs → report-runtime-context-CzSrCBsu.cjs} +1 -1
- package/dist/chunks/{selection-reducer-BIiQXbGM.js → selection-reducer-CvCBQbl2.js} +1 -1
- package/dist/chunks/{selection-reducer-CGKKsaPa.cjs → selection-reducer-Kl22OzIk.cjs} +1 -1
- package/dist/chunks/{semantic-format-BZxJLKvw.js → semantic-format-DwqGYx4V.js} +25 -31
- package/dist/chunks/semantic-format-mVI32OJH.cjs +1 -0
- package/dist/chunks/{source-entity-resolution-D7vnmDwm.js → source-entity-resolution-Bzefiive.js} +7 -7
- package/dist/chunks/{source-entity-resolution-CjbgnwyX.cjs → source-entity-resolution-R46X34SE.cjs} +1 -1
- package/dist/chunks/switch-DNbWXEOP.cjs +134 -0
- package/dist/chunks/{switch-QfKb0Iwe.js → switch-DNv-hVmt.js} +8260 -7659
- package/dist/chunks/{temporal-bucket-B9hMwemw.js → temporal-bucket-DlFuhCnT.js} +6 -6
- package/dist/chunks/{temporal-bucket-contract-IWDgyTMw.js → temporal-bucket-contract-DTLDRzgV.js} +1 -1
- package/dist/chunks/{temporal-bucket-contract-ZctiyXYk.cjs → temporal-bucket-contract-nTv6gvX5.cjs} +1 -1
- package/dist/chunks/{token-types-Dl0hcKBX.js → token-types-BC6RcUY8.js} +1 -1
- package/dist/chunks/{token-types-Ahh5u4iT.cjs → token-types-aWrzwonf.cjs} +1 -1
- package/dist/chunks/{update-policy-COjFudhl.cjs → update-policy-DRDLWe7Y.cjs} +1 -1
- package/dist/chunks/{update-policy-BeQqjupC.js → update-policy-DhAUtiC8.js} +2 -2
- package/dist/chunks/{validators-CkHsAvwB.js → validators-CsdOtZI6.js} +411 -397
- package/dist/chunks/validators-DFeDcdpA.cjs +1 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/dashboard-authoring/index.cjs +3 -3
- package/dist/dashboard-authoring/index.js +233 -227
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +3 -3
- package/dist/data-app-codegen/index.cjs +1 -1
- package/dist/data-app-codegen/index.js +2 -2
- package/dist/data-app-codegen-node/index.cjs +1 -1
- package/dist/data-app-codegen-node/index.js +3 -3
- package/dist/data-app-sdk/index.cjs +1 -1
- package/dist/data-app-sdk/index.js +5 -5
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +2 -2
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +5 -5
- package/dist/format-utils/index.cjs +3 -3
- package/dist/format-utils/index.js +291 -397
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -15
- package/dist/pdf-table-layout/index.cjs +1 -0
- package/dist/pdf-table-layout/index.js +993 -0
- package/dist/report-runtime-context/index.cjs +1 -1
- package/dist/report-runtime-context/index.js +2 -2
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +2 -2
- package/dist/types/briefings/index.d.ts +1 -1
- package/dist/types/components/document-sheet/document-input-bar.d.ts +1 -3
- package/dist/types/components/document-sheet/document-insert-picker.d.ts +37 -0
- package/dist/types/components/document-sheet/document-kpi-section.d.ts +17 -0
- package/dist/types/components/document-sheet/document-matrix-layout-context.d.ts +10 -0
- package/dist/types/components/document-sheet/document-matrix-section.d.ts +27 -0
- package/dist/types/components/document-sheet/document-measure-layer.d.ts +45 -0
- package/dist/types/components/document-sheet/document-outline.d.ts +7 -1
- package/dist/types/components/document-sheet/document-page-navigation.d.ts +22 -0
- package/dist/types/components/document-sheet/document-page.d.ts +9 -5
- package/dist/types/components/document-sheet/document-panel/document-side-panel.d.ts +36 -0
- package/dist/types/components/document-sheet/document-panel/inputs-panel.d.ts +9 -0
- package/dist/types/components/document-sheet/document-panel/page-panel.d.ts +5 -0
- package/dist/types/components/document-sheet/document-panel/panel-controls.d.ts +14 -0
- package/dist/types/components/document-sheet/document-panel/region-panels.d.ts +11 -0
- package/dist/types/components/document-sheet/document-panel/section-panel.d.ts +25 -0
- package/dist/types/components/document-sheet/document-section-print-boundary.d.ts +9 -0
- package/dist/types/components/document-sheet/document-table-chrome.d.ts +22 -0
- package/dist/types/components/document-sheet/document-table-section.d.ts +3 -7
- package/dist/types/components/document-sheet/document-text-preview-context.d.ts +8 -0
- package/dist/types/components/document-sheet/use-first-fitting-variant.d.ts +18 -0
- package/dist/types/components/editor/editor-main/dashboard-variable-node.d.ts +12 -2
- package/dist/types/components/explorer/chart-configuration/matrix-authoring-controls.d.ts +7 -2
- package/dist/types/components/text-variables/variable-chip-plugin.d.ts +23 -0
- package/dist/types/components/text-variables/variable-chip.d.ts +18 -0
- package/dist/types/components/text-variables/variable-picker.d.ts +27 -0
- package/dist/types/components/visual/aggregated-table/utils/metric-format-resolver.d.ts +3 -3
- package/dist/types/components/visual/data-table/types/data-table.d.ts +4 -1
- package/dist/types/components/visual/pivot-table/utils/pivot-metric-formatting.d.ts +2 -2
- package/dist/types/components/visual/settings/table-presentation-settings.d.ts +27 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +5 -5
- package/dist/types/lib/dashboard-inputs/text-variable-options.d.ts +15 -0
- package/dist/types/lib/document/document-canvas-actions.d.ts +22 -0
- package/dist/types/lib/document/document-edits.d.ts +119 -0
- package/dist/types/lib/document/document-kpi-figure.d.ts +27 -0
- package/dist/types/lib/document/document-kpi-layout.d.ts +29 -0
- package/dist/types/lib/document/document-kpi-section-edits.d.ts +15 -0
- package/dist/types/lib/document/document-matrix-bands.d.ts +66 -0
- package/dist/types/lib/document/document-matrix-print.d.ts +11 -0
- package/dist/types/lib/document/document-pagination.d.ts +56 -3
- package/dist/types/lib/document/document-panel-target.d.ts +19 -0
- package/dist/types/lib/document/document-section-editor.d.ts +8 -7
- package/dist/types/lib/document/document-section-kinds.d.ts +49 -0
- package/dist/types/lib/document/document-section-query-options.d.ts +25 -0
- package/dist/types/lib/document/document-section-render-state.d.ts +26 -0
- package/dist/types/lib/document/document-section-utils.d.ts +11 -4
- package/dist/types/lib/document/document-table-dom.d.ts +4 -6
- package/dist/types/lib/document/document-table-pagination-model.d.ts +0 -5
- package/dist/types/lib/document/document-table-print-model.d.ts +4 -3
- package/dist/types/lib/document/document-table-style.d.ts +15 -4
- package/dist/types/lib/document/document-table-surface.d.ts +15 -0
- package/dist/types/lib/document/document-variables.d.ts +40 -6
- package/dist/types/lib/document/use-document-section-data.d.ts +39 -0
- package/dist/types/lib/document/use-measured-document-table-layout.d.ts +50 -0
- package/dist/types/lib/formatters/kpi-result-values.d.ts +20 -0
- package/dist/types/lib/formatters/metric-formatting.d.ts +3 -3
- package/dist/types/lib/hooks/query-context/use-dashboard-card-execution-snapshot.d.ts +8 -2
- package/dist/types/lib/hooks/use-dashboard-frame-query.d.ts +6 -0
- package/dist/types/lib/hooks/use-dashboard-kpi-actions.d.ts +1 -1
- package/dist/types/lib/hooks/use-document-section-editor.d.ts +2 -2
- package/dist/types/lib/hooks/use-document-section-session.d.ts +36 -0
- package/dist/types/lib/hooks/use-editor-preview.d.ts +17 -0
- package/dist/types/lib/hooks/use-is-editing-card.d.ts +7 -0
- package/dist/types/lib/matrix-table/matrix-card-adapter.d.ts +2 -0
- package/dist/types/lib/matrix-table/matrix-card-draft.d.ts +2 -0
- package/dist/types/lib/matrix-table/matrix-delivery.d.ts +4 -0
- package/dist/types/lib/matrix-table/matrix-layout-read.d.ts +68 -0
- package/dist/types/lib/query-context/build-dashboard-execution-snapshot.d.ts +8 -1
- package/dist/types/lib/query-context/build-dashboard-frame-base-query-contexts.d.ts +4 -2
- package/dist/types/lib/query-context/card-execution.d.ts +30 -0
- package/dist/types/lib/query-context/document-section-card-query.d.ts +37 -0
- package/dist/types/lib/stores/dashboard-store.d.ts +12 -8
- package/dist/types/lib/stores/editor-store.d.ts +2 -0
- package/dist/types/lib/table-formatting/table-presentation-fields.d.ts +1 -0
- package/dist/types/lib/text-variables/text-variable-types.d.ts +39 -0
- package/dist/types/lib/types/common-types.d.ts +34 -1
- package/dist/types/lib/utils/card-definition.d.ts +2 -0
- package/dist/types/lib/utils/card-utils.d.ts +13 -6
- package/dist/types/lib/utils/date-timezone-utils.d.ts +26 -4
- package/dist/types/pdf-table-layout.d.ts +2 -0
- package/dist/types/shared/analytics-protocol/index.d.ts +1 -1
- package/dist/types/shared/analytics-protocol/matrix-definition-contract.d.ts +45 -0
- package/dist/types/shared/analytics-protocol/matrix-member-presentation.d.ts +4 -0
- package/dist/types/shared/dashboard-authoring/document-section-cards.d.ts +56 -0
- package/dist/types/shared/dashboard-authoring/index.d.ts +1 -0
- package/dist/types/shared/dashboard-authoring/matrix-delivery.d.ts +36 -1
- package/dist/types/shared/format-utils/formatters/duration-formatter.d.ts +4 -1
- package/dist/types/shared/format-utils/formatters/index.d.ts +2 -2
- package/dist/types/shared/format-utils/formatters/matrix-formatter.d.ts +5 -0
- package/dist/types/shared/format-utils/formatters/number-formatter.d.ts +8 -2
- package/dist/types/shared/format-utils/index.d.ts +1 -0
- package/dist/types/shared/format-utils/matrix-export-presentation.d.ts +690 -1
- package/dist/types/shared/format-utils/matrix-print.d.ts +38 -0
- package/dist/types/shared/format-utils/pdf-table-layout/column-bands.d.ts +55 -0
- package/dist/types/shared/format-utils/pdf-table-layout/index.d.ts +6 -0
- package/dist/types/shared/format-utils/pdf-table-layout/page-size.d.ts +7 -0
- package/dist/types/shared/format-utils/pdf-table-layout/table-column-semantics.d.ts +106 -0
- package/dist/types/shared/format-utils/pdf-table-layout/table-column-widths.d.ts +13 -0
- package/dist/types/shared/format-utils/pdf-table-layout/table-page-geometry.d.ts +19 -0
- package/dist/types/shared/format-utils/pdf-table-layout/wide-table-layout.d.ts +46 -0
- package/dist/types/shared/format-utils/presentation-execution.d.ts +17 -2
- package/dist/types/shared/format-utils/table-structure.d.ts +9 -0
- package/dist/types/shared/format-utils/types/format-types.d.ts +16 -1
- package/package.json +6 -1
- package/dist/chunks/edit-dashboard-visual-BwJ2Eljw.cjs +0 -172
- package/dist/chunks/field-aggregations-jSi77h9Z.cjs +0 -1
- package/dist/chunks/index-DhlVxvyI.cjs +0 -4
- package/dist/chunks/index-DrOFJOCq.cjs +0 -1424
- package/dist/chunks/index-F25jnH0p.cjs +0 -1
- package/dist/chunks/matrix-formatter-BLunke3R.js +0 -424
- package/dist/chunks/matrix-formatter-CveLJo6S.cjs +0 -1
- package/dist/chunks/matrix-member-presentation-CFHjdrxT.cjs +0 -1
- package/dist/chunks/pivot-header-presentation-Cxz8-06f.cjs +0 -5
- package/dist/chunks/pivot-header-presentation-Dm9dUQsl.js +0 -415
- package/dist/chunks/pivot-result-lifecycle-BiERyXnS.cjs +0 -1
- package/dist/chunks/raw-temporal-BUeTpG76.cjs +0 -1
- package/dist/chunks/semantic-format-BzH69TRq.cjs +0 -1
- package/dist/chunks/switch--Re1K566.cjs +0 -134
- package/dist/chunks/validators-DVYAnnX0.cjs +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { MatrixLayoutReadResult } from '../../shared/dashboard-authoring/matrix-delivery.js';
|
|
2
|
+
import { buildMatrixDeliveryPayload } from './matrix-delivery.js';
|
|
3
|
+
import { DocumentTableRowFacts } from '../document/document-pagination.js';
|
|
4
|
+
import { FastPathTableStructure } from '../../shared/format-utils/table-structure.js';
|
|
5
|
+
import { ReportRuntimeContext } from '../../shared/report-runtime-context/index.js';
|
|
6
|
+
/** Matrix sections on one page read at most this many full results at once (tech spec G6). */
|
|
7
|
+
export declare const MATRIX_LAYOUT_READ_CONCURRENCY = 2;
|
|
8
|
+
/**
|
|
9
|
+
* The full Matrix result a Document section prints, from the delivery-authorized
|
|
10
|
+
* layout route (tech spec D-M1). Always resolves to the typed result; an abort
|
|
11
|
+
* rejects, so it is never kept as a result.
|
|
12
|
+
*/
|
|
13
|
+
export declare function readMatrixLayout(input: {
|
|
14
|
+
apiServiceUrl: string;
|
|
15
|
+
token: string;
|
|
16
|
+
payload: ReturnType<typeof buildMatrixDeliveryPayload>;
|
|
17
|
+
signal: AbortSignal;
|
|
18
|
+
}): Promise<MatrixLayoutReadResult>;
|
|
19
|
+
/** How a printed row reads: its role and where it sits in the hierarchy. */
|
|
20
|
+
export type MatrixPrintRowKind = 'member'
|
|
21
|
+
/** A parent row in outline layout, heading its children. */
|
|
22
|
+
| 'group'
|
|
23
|
+
/** The subtotal of the innermost group level. */
|
|
24
|
+
| 'subtotal_inner'
|
|
25
|
+
/** The subtotal of an outer group level. */
|
|
26
|
+
| 'subtotal_outer' | 'grand_total';
|
|
27
|
+
export type MatrixPrintRow = {
|
|
28
|
+
kind: MatrixPrintRowKind;
|
|
29
|
+
/**
|
|
30
|
+
* Group labels this row hides because the row above shows them, by column
|
|
31
|
+
* index. A page that starts at this row repeats them, marked "(cont.)".
|
|
32
|
+
*/
|
|
33
|
+
continuation?: Readonly<Record<number, string>>;
|
|
34
|
+
/**
|
|
35
|
+
* Indented layout: the parent header rows a page that starts at this row
|
|
36
|
+
* repeats, outermost first, already indented and marked "(cont.)".
|
|
37
|
+
*/
|
|
38
|
+
continuationHeaders?: readonly string[];
|
|
39
|
+
};
|
|
40
|
+
/** A read as the page draws it: the formatted table and each row's print facts. */
|
|
41
|
+
export type DocumentMatrixRead = {
|
|
42
|
+
status: 'ok';
|
|
43
|
+
table: FastPathTableStructure;
|
|
44
|
+
rows: readonly MatrixPrintRow[];
|
|
45
|
+
/** Indented layout: the column that carries the row labels. */
|
|
46
|
+
hierarchyColumn?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Column groups for bands (Plan 2, 2c): per column, the index of its
|
|
49
|
+
* group in `groups`, or `null` for a row-label column. A group is one
|
|
50
|
+
* column member (or total) with all its measures.
|
|
51
|
+
*/
|
|
52
|
+
columnGroups: readonly (number | null)[];
|
|
53
|
+
/** Each group's label, as the header prints it ("Houston", "Grand Total"). */
|
|
54
|
+
groupLabels: readonly string[];
|
|
55
|
+
/** What bands name their groups by: the innermost column level, or "Measures". */
|
|
56
|
+
groupLevelLabel: string;
|
|
57
|
+
/** How the paginator may split these rows (Plan 2, L1 and L5). */
|
|
58
|
+
pageBreaks: DocumentTableRowFacts;
|
|
59
|
+
} | Extract<MatrixLayoutReadResult, {
|
|
60
|
+
status: 'failed';
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* Formats a read once, with the definition that ran. The Document section
|
|
64
|
+
* does this in its query, so every page slice shares one formatted table.
|
|
65
|
+
* The table is the one every Matrix PDF prints (`buildMatrixPrintTable`);
|
|
66
|
+
* this adds what only a Document uses, such as "(cont.)" labels.
|
|
67
|
+
*/
|
|
68
|
+
export declare function formatMatrixLayoutRead(result: MatrixLayoutReadResult, report: ReportRuntimeContext): DocumentMatrixRead;
|
|
@@ -6,6 +6,7 @@ import { BuildCardQueryContextParams, CompiledCardQueryContext } from './build-c
|
|
|
6
6
|
import { CompiledDashboardCardFilters } from './compile-dashboard-card-filters.js';
|
|
7
7
|
import { DashboardInputResolveMode } from '../dashboard-inputs/resolve-dashboard-input-context.js';
|
|
8
8
|
import { prepareMatrixCard, MatrixCardCatalog } from '../matrix-table/matrix-card-adapter.js';
|
|
9
|
+
import { DocumentSectionCardRuntime } from './document-section-card-query.js';
|
|
9
10
|
export type DashboardExecutionSnapshot = {
|
|
10
11
|
selectedSheetId: string | null;
|
|
11
12
|
filterValues: TFilterValue[];
|
|
@@ -36,6 +37,12 @@ export type BuildDashboardCardExecutionSnapshotParams = Omit<BuildCardQueryConte
|
|
|
36
37
|
/** Editor drafts replace their persisted card only for this computation. */
|
|
37
38
|
cardOverride?: TCard;
|
|
38
39
|
sheetId?: string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Runs the target card as a Document section (tech spec G3), with the same
|
|
42
|
+
* rules as every section card's frame query. Other cards keep the dashboard
|
|
43
|
+
* runtime.
|
|
44
|
+
*/
|
|
45
|
+
documentSection?: DocumentSectionCardRuntime;
|
|
39
46
|
};
|
|
40
47
|
export type DashboardCardExecutionSnapshot = {
|
|
41
48
|
status: 'ready';
|
|
@@ -52,5 +59,5 @@ export type DashboardCardExecutionSnapshotResult = DashboardCardExecutionSnapsho
|
|
|
52
59
|
message?: string;
|
|
53
60
|
} | null;
|
|
54
61
|
export declare function requireReadyDashboardCardExecutionSnapshot(result: DashboardCardExecutionSnapshotResult): DashboardCardExecutionSnapshot | null;
|
|
55
|
-
export declare function buildDashboardCardExecutionSnapshot({ dashboard, cardId, transientContexts, cardViewStates, semanticExecutionPayload, filters, filterValues, inlineFilterValuesMap, dashboardControls, dashboardControlValues, cardControlValuesMap, dashboardInputValues, dashboardInputMode, timezone, matrixCatalog, cardOverride, sheetId, }: BuildDashboardCardExecutionSnapshotParams): DashboardCardExecutionSnapshotResult;
|
|
62
|
+
export declare function buildDashboardCardExecutionSnapshot({ dashboard, cardId, transientContexts, cardViewStates, semanticExecutionPayload, filters, filterValues, inlineFilterValuesMap, dashboardControls, dashboardControlValues, cardControlValuesMap, dashboardInputValues, dashboardInputMode, timezone, matrixCatalog, cardOverride, sheetId, documentSection, }: BuildDashboardCardExecutionSnapshotParams): DashboardCardExecutionSnapshotResult;
|
|
56
63
|
export {};
|
|
@@ -3,6 +3,7 @@ import { TFilter, TFilterValue } from '../../components/surfboard/filter/types.j
|
|
|
3
3
|
import { ControlDefinition, DashboardInputValues, TCard, TDashboard, TFrame } from '../types/common-types.js';
|
|
4
4
|
import { TransientInputContext } from '../dashboard-inputs/transient-input-context.js';
|
|
5
5
|
import { CardQueryContext } from './build-card-query-context.js';
|
|
6
|
+
import { CardExecution } from './card-execution.js';
|
|
6
7
|
export type DashboardFrameDocumentQueryState = {
|
|
7
8
|
isExplicitDocumentSectionRuntime: boolean;
|
|
8
9
|
isDocumentSectionEditing: boolean;
|
|
@@ -41,7 +42,8 @@ export type BuildDashboardFrameBaseQueryContextsParams = {
|
|
|
41
42
|
cardViewStates: CardViewStateMap | undefined;
|
|
42
43
|
filteringCards?: TCard[];
|
|
43
44
|
selectedSheetId?: string | null;
|
|
44
|
-
|
|
45
|
+
/** How this call's queries run (tech spec M7). */
|
|
46
|
+
execution: CardExecution;
|
|
45
47
|
getCardFrame: (cardId: string) => TFrame | undefined;
|
|
46
48
|
lastRequestPayloadMap?: Map<string, Record<string, unknown>>;
|
|
47
49
|
documentState: DashboardFrameDocumentQueryState;
|
|
@@ -55,4 +57,4 @@ export type DashboardFrameBaseQueryContext = CardQueryContext & {
|
|
|
55
57
|
missingRequiredInputLabels: string[];
|
|
56
58
|
dashboardInputMissingRequiredLabels: string[];
|
|
57
59
|
};
|
|
58
|
-
export declare function buildDashboardFrameBaseQueryContexts({ cards, dashboard, filters, dashboardControls, filterValues, controlValues, dashboardInputValues, dashboardInlineFilterValuesMap, editorInlineFilterValuesMap, dashboardCardControlValuesMap, transientContexts, cardViewStates, filteringCards, selectedSheetId,
|
|
60
|
+
export declare function buildDashboardFrameBaseQueryContexts({ cards, dashboard, filters, dashboardControls, filterValues, controlValues, dashboardInputValues, dashboardInlineFilterValuesMap, editorInlineFilterValuesMap, dashboardCardControlValuesMap, transientContexts, cardViewStates, filteringCards, selectedSheetId, execution, getCardFrame, lastRequestPayloadMap, documentState, }: BuildDashboardFrameBaseQueryContextsParams): DashboardFrameBaseQueryContext[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SemanticExecutionPayloadAuthority } from './use-semantic-execution-payload-for-cards.js';
|
|
2
|
+
/**
|
|
3
|
+
* How one card's query runs, decided once per card (tech spec M7). Every gate
|
|
4
|
+
* in `useDashboardFrameQuery` and the base query-context builder reads this
|
|
5
|
+
* instead of the global `isVisualEditing` flag.
|
|
6
|
+
*/
|
|
7
|
+
export type CardExecution = {
|
|
8
|
+
/** The editor shows a failed query inline; a dashboard or report throws to its boundary. */
|
|
9
|
+
errorMode: 'throw' | 'inline';
|
|
10
|
+
refetchOnInterval: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* `editor`: config cards run unless the editor is in dev mode, and dev mode
|
|
13
|
+
* uses the card's own connection. `runtime`: any card with a connection and
|
|
14
|
+
* SQL or a valid config runs.
|
|
15
|
+
*/
|
|
16
|
+
gating: 'editor' | 'runtime';
|
|
17
|
+
/** `editor` waits for fresh semantic metadata before querying. */
|
|
18
|
+
metadataAuthority: SemanticExecutionPayloadAuthority;
|
|
19
|
+
/** `editorSnapshot`: the editor's inline filter values and the document inputs captured when it opened. */
|
|
20
|
+
inputSource: 'host' | 'editorSnapshot';
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* - `isEditorPreview`: the card renders inside `<Editor>`.
|
|
24
|
+
* - `requestedAuthority`: the caller's explicit choice. Inside the editor some
|
|
25
|
+
* components query with runtime metadata, so it is kept as is.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveCardExecution({ isEditorPreview, requestedAuthority, }: {
|
|
28
|
+
isEditorPreview: boolean;
|
|
29
|
+
requestedAuthority?: SemanticExecutionPayloadAuthority;
|
|
30
|
+
}): CardExecution;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { TFilterValue } from '../../components/surfboard/filter/types.js';
|
|
2
|
+
import { DashboardInputRuntimeValues } from '../dashboard-inputs/resolve-dashboard-input-context.js';
|
|
3
|
+
import { ControlDefinition, DashboardInputValues, TCard, TDashboard } from '../types/common-types.js';
|
|
4
|
+
import { BuildCardQueryContextParams } from './build-card-query-context.js';
|
|
5
|
+
/** What a Document sheet resolved for one section, as one card's query sees it. */
|
|
6
|
+
export type DocumentSectionCardRuntime = {
|
|
7
|
+
sheetId: string | undefined;
|
|
8
|
+
sectionId: string | undefined;
|
|
9
|
+
documentFilterValues: TFilterValue[];
|
|
10
|
+
documentControlDefinitions: ControlDefinition[];
|
|
11
|
+
documentControlValues: Record<string, unknown>;
|
|
12
|
+
/** The page's own input values; the editor's query uses the dashboard's. */
|
|
13
|
+
documentDashboardInputValues?: DashboardInputValues;
|
|
14
|
+
/** The editor's card filters, for the editor's query of the card it edits. */
|
|
15
|
+
editorFilterValues?: TFilterValue[];
|
|
16
|
+
/** `editor` for the editor's query of the card it edits, else `print`. */
|
|
17
|
+
mode: 'print' | 'editor';
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* The `buildCardQueryContext` inputs for a card that runs as a Document
|
|
21
|
+
* section. A section is its own runtime:
|
|
22
|
+
* - nothing is carried in (no transient contexts, no drill state);
|
|
23
|
+
* - the dashboard's toolbar filters and controls do not apply;
|
|
24
|
+
* - the section's scoped dashboard inputs apply when the dashboard has any,
|
|
25
|
+
* otherwise the document's filter and control values do.
|
|
26
|
+
*
|
|
27
|
+
* The one owner of these rules, for frame queries and the Matrix execution
|
|
28
|
+
* snapshot alike.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildDocumentSectionCardQueryParams({ card, dashboard, runtime, dashboardRuntimeValues, timezone, }: {
|
|
31
|
+
card: TCard;
|
|
32
|
+
dashboard: TDashboard;
|
|
33
|
+
runtime: DocumentSectionCardRuntime;
|
|
34
|
+
/** The dashboard's runtime values, which scoped input resolution reads. */
|
|
35
|
+
dashboardRuntimeValues: Omit<DashboardInputRuntimeValues, 'cardViewState'>;
|
|
36
|
+
timezone?: string;
|
|
37
|
+
}): Omit<BuildCardQueryContextParams, 'selectedSheetId' | 'includeAuthoredFilters'>;
|
|
@@ -6,6 +6,8 @@ import { DashboardAIContext } from '../types/assistant-types.js';
|
|
|
6
6
|
import { FilterGroup, Field } from '../types/explorer-types.js';
|
|
7
7
|
import { DashboardControlsModelOptions } from '../controls/control-authoring-types.js';
|
|
8
8
|
import { SemanticExecutionPayload } from '../types/semantic-runtime-types.js';
|
|
9
|
+
import { DocumentPanelTarget } from '../document/document-panel-target.js';
|
|
10
|
+
import { DocumentEdit, DocumentEditResult } from '../document/document-edits.js';
|
|
9
11
|
import { DocumentFilterMode } from '../document/document-input-runtime.js';
|
|
10
12
|
import { DashboardInputRuntimeTarget } from '../dashboard-inputs/dashboard-input-values.js';
|
|
11
13
|
import { DashboardFilterMappingAuthoringIssue, DashboardFilterInputAcceptanceResult, DashboardFilterMappingAcceptanceResult, DashboardFilterMappingAuthoringRequest, DashboardFilterMappingDisableResult } from '../dashboard-inputs/dashboard-filter-mapping-authoring.js';
|
|
@@ -61,8 +63,8 @@ export type DashboardStore = {
|
|
|
61
63
|
selectedFrameId?: string | null;
|
|
62
64
|
selectedCardId?: string | null;
|
|
63
65
|
selectedCard?: TCard | null;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
/** What each Document sheet's side panel shows; also its section selection. */
|
|
67
|
+
documentPanelTargetBySheetId: Record<string, DocumentPanelTarget>;
|
|
66
68
|
documentInputRuntimeBySheetId: Record<string, DocumentInputRuntimeState>;
|
|
67
69
|
/**
|
|
68
70
|
* Pending sheet-wide frame rewrites produced while visual editing. These stay
|
|
@@ -139,7 +141,6 @@ export type DashboardStore = {
|
|
|
139
141
|
onRemoveCard?: (card: TCard, sheetId: string) => void;
|
|
140
142
|
actions: Actions;
|
|
141
143
|
};
|
|
142
|
-
export type DocumentInspectorTab = 'section' | 'page' | 'header' | 'footer' | 'inputs';
|
|
143
144
|
export type DocumentInputRuntimeState = {
|
|
144
145
|
filterValuesByInputId: Record<string, TFilterValue | undefined>;
|
|
145
146
|
filterModesByInputId: Record<string, DocumentFilterMode>;
|
|
@@ -227,11 +228,14 @@ type Actions = {
|
|
|
227
228
|
deleteSheet: (sheetId: string) => void;
|
|
228
229
|
setSheetTitle: (sheetId: string, title: string) => void;
|
|
229
230
|
updateSheetDocument: (sheetId: string, updater: (document: DocumentDefinition) => DocumentDefinition) => void;
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
231
|
+
/**
|
|
232
|
+
* The one write for a Document's sections (see `applyDocumentEdit`).
|
|
233
|
+
* Persists the edited document, any sheet calculated fields a copy brought,
|
|
234
|
+
* and card reference cleanup. Throws `DocumentEditError` for a refused edit
|
|
235
|
+
* without changing state.
|
|
236
|
+
*/
|
|
237
|
+
editDocument: (sheetId: string, edit: DocumentEdit) => DocumentEditResult;
|
|
238
|
+
setDocumentPanelTarget: (sheetId: string, target: DocumentPanelTarget) => void;
|
|
235
239
|
setDocumentInputFilterValues: (sheetId: string, valuesByInputId: Record<string, TFilterValue | undefined>) => void;
|
|
236
240
|
setDocumentInputFilterValue: (sheetId: string, inputId: string, filterValue: TFilterValue) => void;
|
|
237
241
|
removeDocumentInputFilterValue: (sheetId: string, inputId: string) => void;
|
|
@@ -28,6 +28,8 @@ export type EditorContext = {
|
|
|
28
28
|
sheetId: string;
|
|
29
29
|
sectionId: string;
|
|
30
30
|
cardId: string;
|
|
31
|
+
/** The card type at open. The section's kind cannot change in the editor. */
|
|
32
|
+
lockedKind: TChartType;
|
|
31
33
|
documentFilterValues?: TFilterValue[];
|
|
32
34
|
documentControlDefinitions?: ControlDefinition[];
|
|
33
35
|
documentControlValues?: Record<string, unknown>;
|
|
@@ -10,6 +10,7 @@ export type TableFieldLookup = {
|
|
|
10
10
|
fieldRole?: QueryColumnKeyRole;
|
|
11
11
|
columnKeyMap?: QueryColumnKeyMap;
|
|
12
12
|
};
|
|
13
|
+
/** True when the field authors a format for numeric values (numeric or duration). */
|
|
13
14
|
export declare function hasNumericFieldFormat(field: Pick<PresentationField, 'format'> | undefined): boolean;
|
|
14
15
|
/** Resolve identity before presentation. A supplied map is authoritative; names
|
|
15
16
|
* and labels are only a unique-match adapter for results without bindings. */
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** What kind of value a variable holds; picks the chip's icon. */
|
|
2
|
+
export type TextVariableKind = 'filter' | 'date' | 'control' | 'report';
|
|
3
|
+
/** How one variable reference reads as a chip. */
|
|
4
|
+
export type TextVariableChipFace = {
|
|
5
|
+
/** The input's name ("State"), or "Missing input". */
|
|
6
|
+
name: string;
|
|
7
|
+
kind: TextVariableKind;
|
|
8
|
+
/** Shown after the name when the chip shows a part other than the default. */
|
|
9
|
+
partLabel?: string;
|
|
10
|
+
/** The reference points at an input that no longer exists. */
|
|
11
|
+
missing?: boolean;
|
|
12
|
+
};
|
|
13
|
+
/** One part of an input a chip can show, with what it holds now. */
|
|
14
|
+
export type TextVariablePart = {
|
|
15
|
+
key: string;
|
|
16
|
+
label: string;
|
|
17
|
+
preview?: string;
|
|
18
|
+
};
|
|
19
|
+
/** One input (or report value) the picker offers. */
|
|
20
|
+
export type TextVariableOption = {
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
kind: TextVariableKind;
|
|
24
|
+
parts: TextVariablePart[];
|
|
25
|
+
defaultPart: string;
|
|
26
|
+
};
|
|
27
|
+
/** What a chip shows: an option and one of its parts. */
|
|
28
|
+
export type TextVariableSelection = {
|
|
29
|
+
optionId: string;
|
|
30
|
+
part: string;
|
|
31
|
+
};
|
|
32
|
+
export declare const TEXT_VARIABLE_PART_LABELS: Record<string, string>;
|
|
33
|
+
/** The picker's groups, in order. */
|
|
34
|
+
export declare function textVariableGroup(kind: TextVariableKind): "Filters" | "Controls" | "Report";
|
|
35
|
+
/**
|
|
36
|
+
* Options whose name matches `query`, in the picker's order: filters, then
|
|
37
|
+
* controls, then report values.
|
|
38
|
+
*/
|
|
39
|
+
export declare function filterTextVariableOptions(options: readonly TextVariableOption[], query: string): TextVariableOption[];
|
|
@@ -1435,7 +1435,7 @@ export type DocumentTextStyle = {
|
|
|
1435
1435
|
color?: string;
|
|
1436
1436
|
align?: 'left' | 'center' | 'right';
|
|
1437
1437
|
};
|
|
1438
|
-
export type DocumentSection = DocumentTextSection | DocumentTableSection | DocumentChartSection | DocumentSpacerSection | DocumentPageBreakSection;
|
|
1438
|
+
export type DocumentSection = DocumentTextSection | DocumentTableSection | DocumentKpiSection | DocumentChartSection | DocumentSpacerSection | DocumentPageBreakSection;
|
|
1439
1439
|
export type DocumentTextSection = {
|
|
1440
1440
|
id: string;
|
|
1441
1441
|
type: 'text';
|
|
@@ -1452,6 +1452,39 @@ export type DocumentTableSection = {
|
|
|
1452
1452
|
columnFormatting?: Record<string, unknown>;
|
|
1453
1453
|
repeatHeaderOnPageBreak?: boolean;
|
|
1454
1454
|
rowHeightPx?: number;
|
|
1455
|
+
/** Print nothing, and take no space, while the result is empty (Plan 2). */
|
|
1456
|
+
hideWhenEmpty?: boolean;
|
|
1457
|
+
/** Matrix sections only: how the Document prints the Matrix (Plan 2). */
|
|
1458
|
+
matrix?: {
|
|
1459
|
+
/** `tabular`: one column per row level. `outline`: one indented column. */
|
|
1460
|
+
rowLabels?: 'tabular' | 'outline';
|
|
1461
|
+
/** Where each group's subtotal prints. */
|
|
1462
|
+
subtotals?: 'after' | 'before';
|
|
1463
|
+
/**
|
|
1464
|
+
* A Matrix too wide for the page prints in column bands. `across`: each
|
|
1465
|
+
* slice of rows prints in every band before the next slice. `down`:
|
|
1466
|
+
* each band runs through every row before the next band.
|
|
1467
|
+
*/
|
|
1468
|
+
bandOrder?: 'across' | 'down';
|
|
1469
|
+
};
|
|
1470
|
+
};
|
|
1471
|
+
};
|
|
1472
|
+
/**
|
|
1473
|
+
* Headline numbers. Each card is an ordinary `kpi` card with its own query.
|
|
1474
|
+
* Read and rewrite its cards through `getDocumentSectionCards` and
|
|
1475
|
+
* `mapDocumentSectionCards` (`react-semaphor/dashboard-authoring`).
|
|
1476
|
+
*/
|
|
1477
|
+
export type DocumentKpiSection = {
|
|
1478
|
+
id: string;
|
|
1479
|
+
type: 'kpi';
|
|
1480
|
+
title?: string;
|
|
1481
|
+
/** 1 to 8 cards, each `card.type === 'kpi'`, with unique ids. Order is display order. */
|
|
1482
|
+
cards: TCard[];
|
|
1483
|
+
kpi: {
|
|
1484
|
+
/** `tiles` holds at most 6 cards; a section with more uses `lines`. */
|
|
1485
|
+
layout: 'tiles' | 'lines';
|
|
1486
|
+
/** Used by `lines`, default 2. Kept but ignored on `tiles`. */
|
|
1487
|
+
columns?: 1 | 2;
|
|
1455
1488
|
};
|
|
1456
1489
|
};
|
|
1457
1490
|
export type DocumentChartSection = {
|
|
@@ -43,6 +43,7 @@ export declare function getCardDefinition(card: DefinitionCard, catalog?: Matrix
|
|
|
43
43
|
position: "before" | "after";
|
|
44
44
|
label?: string | undefined;
|
|
45
45
|
}>>;
|
|
46
|
+
skipRedundant?: boolean | undefined;
|
|
46
47
|
};
|
|
47
48
|
rows: {
|
|
48
49
|
grand: {
|
|
@@ -55,6 +56,7 @@ export declare function getCardDefinition(card: DefinitionCard, catalog?: Matrix
|
|
|
55
56
|
position: "before" | "after";
|
|
56
57
|
label?: string | undefined;
|
|
57
58
|
}>>;
|
|
59
|
+
skipRedundant?: boolean | undefined;
|
|
58
60
|
};
|
|
59
61
|
};
|
|
60
62
|
layout: {
|
|
@@ -2,19 +2,20 @@ import { TDashboard, TCard, TSheet } from '../types/common-types.js';
|
|
|
2
2
|
export type DashboardCardEntry = {
|
|
3
3
|
card: TCard;
|
|
4
4
|
sheet: TSheet;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/** Set when the card is the visual of a document section. */
|
|
5
|
+
/** Set when the card sits in a frame. */
|
|
6
|
+
frameId?: string;
|
|
7
|
+
/** Set when the card belongs to a document section (a section may own several cards). */
|
|
9
8
|
sectionId?: string;
|
|
10
9
|
};
|
|
10
|
+
/** Dashboard cards: sheet cards and frame cards. Document section cards are not included. */
|
|
11
|
+
export declare function getDashboardCardEntries(dashboard: Pick<TDashboard, 'sheets'>): DashboardCardEntry[];
|
|
11
12
|
/**
|
|
12
13
|
* Every card a dashboard hosts, with where it sits: sheet cards, frame cards,
|
|
13
|
-
* and
|
|
14
|
+
* and every card of a document section. Use this, not
|
|
14
15
|
* `getDashboardCardEntries`, when a card may be reached by a scope that names
|
|
15
16
|
* document sections.
|
|
16
17
|
*/
|
|
17
|
-
export declare function getDashboardCardLocations(dashboard: Pick<TDashboard, 'sheets'>):
|
|
18
|
+
export declare function getDashboardCardLocations(dashboard: Pick<TDashboard, 'sheets'>): DashboardCardEntry[];
|
|
18
19
|
export declare function getDashboardCards(dashboard: Pick<TDashboard, 'sheets'>): TCard[];
|
|
19
20
|
/**
|
|
20
21
|
* Check if a card ID is unique across the entire dashboard
|
|
@@ -53,6 +54,12 @@ export declare function getAllCardIds(dashboard: TDashboard): string[];
|
|
|
53
54
|
* @returns The card if found, undefined otherwise
|
|
54
55
|
*/
|
|
55
56
|
export declare function findCardById(dashboard: TDashboard, cardId: string): TCard | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* A dashboard card (sheet or frame) by id. Document section cards are not
|
|
59
|
+
* included: they need their section for input resolution, so they are found
|
|
60
|
+
* through section-aware lookups (for example the dashboard input snapshot's
|
|
61
|
+
* section targets). Phase 1.2 routes KPI card execution through those.
|
|
62
|
+
*/
|
|
56
63
|
export declare function findCardLocationById(dashboard: TDashboard, cardId: string): {
|
|
57
64
|
card: TCard;
|
|
58
65
|
sheet: TSheet;
|
|
@@ -8,9 +8,13 @@ import { CalendarContext, WeekStart } from '../types/token-types.js';
|
|
|
8
8
|
* @returns A Date object representing midnight in the specified timezone
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
|
-
* //
|
|
12
|
-
* startOfDayInTimezone(new Date('2025-11-
|
|
11
|
+
* // Nov 18, 2025 14:30 PST
|
|
12
|
+
* startOfDayInTimezone(new Date('2025-11-18T22:30:00Z'), 'America/Los_Angeles')
|
|
13
13
|
* // Returns a Date that serializes to: 2025-11-18T08:00:00.000Z (Nov 18 00:00 PST)
|
|
14
|
+
*
|
|
15
|
+
* Do not pass `new Date('YYYY-MM-DD')`: that is UTC midnight, which is the
|
|
16
|
+
* previous day in zones west of UTC. Use `parseFilterDateValue` for
|
|
17
|
+
* date-only strings.
|
|
14
18
|
*/
|
|
15
19
|
export declare const startOfDayInTimezone: (date: Date, timezone: string) => Date;
|
|
16
20
|
/**
|
|
@@ -22,11 +26,29 @@ export declare const startOfDayInTimezone: (date: Date, timezone: string) => Dat
|
|
|
22
26
|
* @returns A Date object representing 23:59:59.999 in the specified timezone
|
|
23
27
|
*
|
|
24
28
|
* @example
|
|
25
|
-
* //
|
|
26
|
-
* endOfDayInTimezone(new Date('2025-11-
|
|
29
|
+
* // Nov 20, 2025 14:30 PST
|
|
30
|
+
* endOfDayInTimezone(new Date('2025-11-20T22:30:00Z'), 'America/Los_Angeles')
|
|
27
31
|
* // Returns a Date that serializes to: 2025-11-21T07:59:59.999Z (Nov 20 23:59:59 PST)
|
|
28
32
|
*/
|
|
29
33
|
export declare const endOfDayInTimezone: (date: Date, timezone: string) => Date;
|
|
34
|
+
/**
|
|
35
|
+
* Parses a stored date filter value into the instant the date pickers would
|
|
36
|
+
* have written for it.
|
|
37
|
+
*
|
|
38
|
+
* Filter values are usually instants, but date-only strings (`YYYY-MM-DD`)
|
|
39
|
+
* also arrive from SDK/embed defaults, generated dashboards and inputs. A
|
|
40
|
+
* date-only string names a calendar day, not an instant: it maps to the start
|
|
41
|
+
* (or, for an upper bound, the end) of that day in `timezone`, exactly as
|
|
42
|
+
* `startOfDayInTimezone` / `endOfDayInTimezone` produce for a picked day.
|
|
43
|
+
* `new Date('YYYY-MM-DD')` would instead give UTC midnight, which displays as
|
|
44
|
+
* the previous day in zones west of UTC.
|
|
45
|
+
*
|
|
46
|
+
* Everything else parses as an instant. Returns undefined for empty or
|
|
47
|
+
* unparseable values, including `YYYY-MM-DD` strings that name no calendar
|
|
48
|
+
* day (which `new Date` would silently roll into the next month). A missing timezone falls back to the browser zone, as
|
|
49
|
+
* `getEffectiveTimezone` does.
|
|
50
|
+
*/
|
|
51
|
+
export declare const parseFilterDateValue: (value: unknown, timezone: string | null | undefined, bound?: "start" | "end") => Date | undefined;
|
|
30
52
|
/**
|
|
31
53
|
* Gets the start of week (midnight) for a date in the specified timezone.
|
|
32
54
|
*
|
|
@@ -26,7 +26,7 @@ export * from './matrix-window-contract.js';
|
|
|
26
26
|
export * from './matrix-member-presentation.js';
|
|
27
27
|
export { matrixFormattingRoleSchema, type MatrixFormattingRole } from './matrix-path-contract.js';
|
|
28
28
|
export { getMatrixAnalyticalDefinition } from './matrix-analytical-definition.js';
|
|
29
|
-
export { matrixAxisSchema, matrixAggregateSchema, matrixFieldSchema, matrixLevelSchema, matrixMeasureSchema, matrixMemberSchema, matrixPathSchema, matrixCoordinateSchema, matrixSortTargetSchema, matrixSortSchema, matrixRankingSchema, matrixPathKey, matrixSortKey, matrixSpecSchema, matrixTotalPresentationSchema, matrixPresentationSchema, matrixExpansionSchema, matrixDefaultViewSchema, matrixViewStateSchema, matrixDefinitionInputSchema, matrixConfigSchema, matrixExportRequestSchema, } from './matrix-definition-contract.js';
|
|
29
|
+
export { matrixAxisSchema, matrixAggregateSchema, matrixFieldSchema, matrixLevelSchema, matrixMeasureSchema, matrixMemberSchema, matrixPathSchema, matrixCoordinateSchema, matrixSortTargetSchema, matrixSortSchema, matrixRankingSchema, matrixPathKey, matrixSortKey, matrixSpecSchema, matrixTotalPresentationSchema, MATRIX_TOTAL_MEMBER_PLACEHOLDER, matrixPresentationSchema, matrixExpansionSchema, matrixDefaultViewSchema, matrixViewStateSchema, matrixDefinitionInputSchema, matrixConfigSchema, matrixExportRequestSchema, } from './matrix-definition-contract.js';
|
|
30
30
|
export type { MatrixLevelId, MatrixMeasureId, MatrixAxis, MatrixAggregate, MatrixField, MatrixLevel, MatrixMeasure, MatrixMember, MatrixPath, MatrixCoordinate, MatrixSortTarget, MatrixSort, MatrixRanking, MatrixSpec, MatrixTotalPresentation, MatrixPresentation, MatrixExpansion, MatrixViewState, MatrixConfig, MatrixDefinitionInput, MatrixExportRequest, } from './matrix-definition-contract.js';
|
|
31
31
|
export * from './matrix-operation-contract.js';
|
|
32
32
|
export { configSourceRefSchema } from './execution-input-schemas.js';
|