react-semaphor 0.1.546 → 0.1.548
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.js +71 -68
- package/dist/assistant-context/index.js +1 -1
- package/dist/briefings/index.js +1 -1
- package/dist/chunks/applied-constraints-DU-wndZ7.js +47 -0
- package/dist/chunks/{assistant-chat-BPXhulAx.js → assistant-chat-DCcWsoGm.js} +106 -106
- package/dist/chunks/{bookmark-state-C4vetoa0.js → bookmark-state-Cu-a5ie_.js} +2 -8
- package/dist/chunks/{custom-visual-inputs-CkJW9pBS.js → custom-visual-inputs-BTRnwsfd.js} +1 -1
- package/dist/chunks/{dashboard-C3CoKbGY.js → dashboard-BZHL9a-z.js} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-Be4h-7My.js → dashboard-briefing-launcher-DML-cAzB.js} +528 -528
- package/dist/chunks/{dashboard-controls-bxPrlSyp.js → dashboard-controls-BGoBTPS7.js} +45 -45
- package/dist/chunks/{dashboard-json-BrjxIiRt.js → dashboard-json-iHPsdn3j.js} +1 -1
- package/dist/chunks/{document-dashboard-inputs-CRVHpIHp.js → document-dashboard-inputs-B2AqPfrq.js} +94 -94
- package/dist/chunks/{edit-dashboard-visual-DYYYDjY6.js → edit-dashboard-visual-CLEFFf2T.js} +281 -281
- package/dist/chunks/{column-catalog-BYnochWQ.js → filter-reach-copy-ByzGadUk.js} +978 -861
- package/dist/chunks/{global-date-filter-utils-9d6m9-FE.js → global-date-filter-utils-CeeFJ1CP.js} +4070 -3792
- package/dist/chunks/{index-DkQkMKa1.js → index-DeDHr3iz.js} +30 -30
- package/dist/chunks/{raw-temporal-presentation-CBzrDOjM.js → raw-temporal-presentation-CrUM2I_o.js} +1 -1
- package/dist/chunks/{report-preferences-dialog-4QEZWe5U.js → report-preferences-dialog-CM7kXmXp.js} +59 -59
- package/dist/chunks/{resolve-dashboard-input-context-UpK_LBpL.js → resolve-dashboard-input-context-BmWF9hSl.js} +1511 -1612
- package/dist/chunks/{saved-dashboard-context-D_I3Lxk0.js → saved-dashboard-context-qtfzl9Eb.js} +5 -5
- package/dist/chunks/{semaphor-ready-indicator-4zpRHE-X.js → semaphor-ready-indicator-Ol6VcaR7.js} +36548 -35855
- package/dist/chunks/{shelf-drop-preview-context-Cfw7TRAx.js → shelf-drop-preview-context-C2SEC3I9.js} +80 -80
- package/dist/chunks/{source-entity-resolution-BIGRvtbG.js → source-entity-resolution-D195CrYS.js} +221 -192
- package/dist/chunks/{table-settings-CunhoDUi.js → table-settings-WysCBj62.js} +133 -124
- package/dist/chunks/{use-create-flow-overlay-state-DZBZiiD-.js → use-create-flow-overlay-state-CbGIjaVD.js} +2 -2
- package/dist/dashboard/index.js +2 -2
- package/dist/dashboard-authoring/index.js +1419 -1340
- package/dist/data-app-sdk-validation/index.js +1 -1
- package/dist/index.js +14 -14
- package/dist/surfboard/index.js +2 -2
- package/dist/types/components/surfboard/filter/types.d.ts +7 -0
- package/dist/types/components/surfboard/screen-size-preview-button.d.ts +7 -4
- package/dist/types/components/visual/matrix-table/matrix-card-view.d.ts +3 -0
- package/dist/types/index.js +2 -2
- package/dist/types/lib/dashboard-inputs/dashboard-filter-mapping-authoring.d.ts +383 -22
- package/dist/types/lib/dashboard-inputs/dashboard-filter-value-identity.d.ts +65 -0
- package/dist/types/lib/dashboard-inputs/resolve-selection-input.d.ts +3 -3
- package/dist/types/lib/hooks/use-dashboard-card.d.ts +2 -0
- package/dist/types/lib/matrix-table/matrix-delivery-policy.d.ts +1 -1
- package/dist/types/lib/matrix-table/matrix-runtime-types.d.ts +9 -1
- package/dist/types/lib/matrix-table/matrix-runtime.d.ts +5 -1
- package/dist/types/lib/query-context/dashboard-filter-mapping-resolution.d.ts +83 -13
- package/dist/types/lib/stores/dashboard-store.d.ts +12 -0
- package/dist/types/shared/analytics-protocol/applied-constraints.d.ts +57 -1
- package/dist/types/shared/assistant-protocol/context.d.ts +8 -8
- package/dist/types/shared/dashboard-authoring/changes/diagnostics.d.ts +2 -0
- package/dist/types/shared/dashboard-authoring/changes/resolve-dashboard-changes.d.ts +7 -0
- package/dist/types/shared/dashboard-authoring/click-to-filter-settings.d.ts +3 -3
- package/dist/types/shared/dashboard-authoring/dashboard-filter-automatic-target.d.ts +4 -4
- package/dist/types/shared/dashboard-authoring/dashboard-filter-mapping-contract.d.ts +3 -1
- package/dist/types/shared/dashboard-authoring/dashboard-filter-mapping-types.d.ts +27 -1
- package/dist/types/shared/dashboard-authoring/dashboard-filter-value-compatibility.d.ts +12 -3
- package/dist/types/shared/dashboard-authoring/filter-reach-copy.d.ts +18 -0
- package/dist/types/shared/dashboard-authoring/filter-reach-preview.d.ts +97 -0
- package/dist/types/shared/dashboard-authoring/index.d.ts +5 -1
- package/dist/types/shared/dashboard-authoring/outline/outline-dashboard.d.ts +7 -0
- package/dist/types/shared/dashboard-authoring/outline/outline-filters.d.ts +26 -4
- package/dist/types/shared/dashboard-authoring/semantic-auto-join-card.d.ts +22 -0
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { Z as Q } from "../chunks/matrix-operation-contract-D6vYkZK4.js";
|
|
|
3
3
|
import "../chunks/analytics-base-schemas-BKs3flFS.js";
|
|
4
4
|
import "zod";
|
|
5
5
|
import { p as W } from "../chunks/report-runtime-context-hWiTCzFV.js";
|
|
6
|
-
import { o as U } from "../chunks/source-entity-resolution-
|
|
6
|
+
import { o as U } from "../chunks/source-entity-resolution-D195CrYS.js";
|
|
7
7
|
import { toSemaphorMetricIntent as J, toSemaphorAnalysisIntent as V, toSemaphorRecordsIntent as G, toSemaphorSqlIntent as L, toSemaphorMatrixIntent as Z, toSemaphorInputOptionsIntent as X } from "../data-app-sdk-adapters/index.js";
|
|
8
8
|
import { m as Y } from "../chunks/matrix-card-LiMEipvq.js";
|
|
9
9
|
function ee({
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { D as M } from "./chunks/dashboard-
|
|
2
|
-
import { C as fa, E as ma } from "./chunks/table-settings-
|
|
3
|
-
import { C as U, b as V, c as z, d as H, e as W, f as q } from "./chunks/report-preferences-dialog-
|
|
4
|
-
import { g as ga, A as Ca, h as ba, a as ya, R as va, D as Da } from "./chunks/report-preferences-dialog-
|
|
1
|
+
import { D as M } from "./chunks/dashboard-BZHL9a-z.js";
|
|
2
|
+
import { C as fa, E as ma } from "./chunks/table-settings-WysCBj62.js";
|
|
3
|
+
import { C as U, b as V, c as z, d as H, e as W, f as q } from "./chunks/report-preferences-dialog-CM7kXmXp.js";
|
|
4
|
+
import { g as ga, A as Ca, h as ba, a as ya, R as va, D as Da } from "./chunks/report-preferences-dialog-CM7kXmXp.js";
|
|
5
5
|
import { jsx as o, jsxs as b } from "react/jsx-runtime";
|
|
6
|
-
import { E as P, F as $, S as G, a as K, U as Q, c as J, A as Y, C as X, u as L, d as Z, f as ee, g as ae, V as te, e as _, h as N, s as se, R as re } from "./chunks/semaphor-ready-indicator-
|
|
7
|
-
import { O as Aa, aw as Sa, ax as Ta, ay as wa, B as xa, a5 as Ba, I as Fa, G as Pa, z as _a, aG as Na, M as Ra, W as La, k as Ia, n as ja, n as ka, o as Oa, H as Ma, ar as Ua, at as Va, au as za, as as Ha, ai as Wa, al as qa, aF as $a, a9 as Ga, aq as Ka, a2 as Qa, aA as Ja, aB as Ya, ad as Xa, am as Za, y as et, x as at, v as tt, w as st, aJ as rt, a8 as ot, an as nt, ao as it, ah as lt, ak as ct, aE as ut, aD as dt, aC as pt, aI as ft, aH as mt, aj as ht, a7 as gt, a6 as Ct, T as bt, ab as yt, ap as vt, af as Dt, ac as Et, ae as At, ag as St, X as Tt, Y as wt, Z as xt, aa as Bt, P as Ft, N as Pt, t as _t, az as Nt, r as Rt, K as Lt, _ as It, a0 as jt, $ as kt, a1 as Ot, q as Mt, j as Ut, J as Vt, L as zt, l as Ht, a4 as Wt, Q as qt, a3 as $t, i as Gt, p as Kt, m as Qt, av as Jt } from "./chunks/semaphor-ready-indicator-
|
|
6
|
+
import { E as P, F as $, S as G, a as K, U as Q, c as J, A as Y, C as X, u as L, d as Z, f as ee, g as ae, V as te, e as _, h as N, s as se, R as re } from "./chunks/semaphor-ready-indicator-Ol6VcaR7.js";
|
|
7
|
+
import { O as Aa, aw as Sa, ax as Ta, ay as wa, B as xa, a5 as Ba, I as Fa, G as Pa, z as _a, aG as Na, M as Ra, W as La, k as Ia, n as ja, n as ka, o as Oa, H as Ma, ar as Ua, at as Va, au as za, as as Ha, ai as Wa, al as qa, aF as $a, a9 as Ga, aq as Ka, a2 as Qa, aA as Ja, aB as Ya, ad as Xa, am as Za, y as et, x as at, v as tt, w as st, aJ as rt, a8 as ot, an as nt, ao as it, ah as lt, ak as ct, aE as ut, aD as dt, aC as pt, aI as ft, aH as mt, aj as ht, a7 as gt, a6 as Ct, T as bt, ab as yt, ap as vt, af as Dt, ac as Et, ae as At, ag as St, X as Tt, Y as wt, Z as xt, aa as Bt, P as Ft, N as Pt, t as _t, az as Nt, r as Rt, K as Lt, _ as It, a0 as jt, $ as kt, a1 as Ot, q as Mt, j as Ut, J as Vt, L as zt, l as Ht, a4 as Wt, Q as qt, a3 as $t, i as Gt, p as Kt, m as Qt, av as Jt } from "./chunks/semaphor-ready-indicator-Ol6VcaR7.js";
|
|
8
8
|
import * as T from "react";
|
|
9
9
|
import I, { useMemo as R, useEffect as j } from "react";
|
|
10
10
|
import { C as Xt, D as Zt, L as es, P as as, e as ts, g as ss, j as rs, h as os, k as ns, d as is, b as ls, i as cs, c as us, n as ds, f as ps } from "./chunks/validators-C-aOQlTB.js";
|
|
@@ -15,26 +15,26 @@ import "./chunks/matrix-operation-contract-D6vYkZK4.js";
|
|
|
15
15
|
import "./chunks/analytics-base-schemas-BKs3flFS.js";
|
|
16
16
|
import "./value-format-preferences/index.js";
|
|
17
17
|
import { D as ms } from "./chunks/token-types-BMqRmT-C.js";
|
|
18
|
-
import { c as gs, A as Cs, b as bs, g as ys, D as vs, e as Ds, f as Es, d as As, S as Ss, U as Ts, a as ws, V as xs, W as Bs, i as Fs, u as Ps } from "./chunks/dashboard-briefing-launcher-
|
|
18
|
+
import { c as gs, A as Cs, b as bs, g as ys, D as vs, e as Ds, f as Es, d as As, S as Ss, U as Ts, a as ws, V as xs, W as Bs, i as Fs, u as Ps } from "./chunks/dashboard-briefing-launcher-DML-cAzB.js";
|
|
19
19
|
import { n as Ns, s as Rs, u as Ls } from "./chunks/normalize-dashboard-for-dirty-check-XKgH3GFX.js";
|
|
20
20
|
import { createRoot as ne } from "react-dom/client";
|
|
21
|
-
import "./chunks/shelf-drop-preview-context-
|
|
21
|
+
import "./chunks/shelf-drop-preview-context-C2SEC3I9.js";
|
|
22
22
|
import "./chunks/index-CuHybtft.js";
|
|
23
23
|
import { D as js } from "./chunks/report-runtime-context-hWiTCzFV.js";
|
|
24
24
|
import { c as B } from "./chunks/_commonjsHelpers-DimLPMtv.js";
|
|
25
25
|
import { P as ie, a as le, B as ce, b as ue, c as de } from "./chunks/switch-CEBOR4n7.js";
|
|
26
|
-
import "./chunks/global-date-filter-utils-
|
|
26
|
+
import "./chunks/global-date-filter-utils-CeeFJ1CP.js";
|
|
27
27
|
import { r as Os, a as Ms } from "./chunks/pivot-result-identity-C-Q1j1Wb.js";
|
|
28
|
-
import { a as pe } from "./chunks/resolve-dashboard-input-context-
|
|
29
|
-
import { k as Vs, f as zs, n as Hs, m as Ws, s as qs, t as $s, j as Gs, h as Ks, o as Qs, g as Js, d as Ys, i as Xs, u as Zs, q as er } from "./chunks/resolve-dashboard-input-context-
|
|
28
|
+
import { a as pe } from "./chunks/resolve-dashboard-input-context-BmWF9hSl.js";
|
|
29
|
+
import { k as Vs, f as zs, n as Hs, m as Ws, s as qs, t as $s, j as Gs, h as Ks, o as Qs, g as Js, d as Ys, i as Xs, u as Zs, q as er } from "./chunks/resolve-dashboard-input-context-BmWF9hSl.js";
|
|
30
30
|
import "./chunks/index-CtoK1Lgu.js";
|
|
31
31
|
import "react-dom";
|
|
32
|
-
import "./chunks/index-
|
|
32
|
+
import "./chunks/index-DeDHr3iz.js";
|
|
33
33
|
import "./chunks/appearance-context-DEYtWinQ.js";
|
|
34
34
|
import "./chunks/color-CJvdlFM_.js";
|
|
35
35
|
import "./chunks/index-CLIro-EG.js";
|
|
36
|
-
import "./chunks/bookmark-state-
|
|
37
|
-
import { I as fe } from "./chunks/use-create-flow-overlay-state-
|
|
36
|
+
import "./chunks/bookmark-state-Cu-a5ie_.js";
|
|
37
|
+
import { I as fe } from "./chunks/use-create-flow-overlay-state-CbGIjaVD.js";
|
|
38
38
|
import { C as me } from "./chunks/x-4f5U2XwU.js";
|
|
39
39
|
import "./chunks/appearance-runtime-provider-B-M8gwlZ.js";
|
|
40
40
|
const he = { cssWidth: 960, cssHeight: 540 };
|
package/dist/surfboard/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a, R as s, D as o } from "../chunks/report-preferences-dialog-
|
|
2
|
-
import { C as f, E as D } from "../chunks/table-settings-
|
|
1
|
+
import { a, R as s, D as o } from "../chunks/report-preferences-dialog-CM7kXmXp.js";
|
|
2
|
+
import { C as f, E as D } from "../chunks/table-settings-WysCBj62.js";
|
|
3
3
|
export {
|
|
4
4
|
f as CONTROL_CARD_DEFAULT_VALUE,
|
|
5
5
|
a as DisplayFormatPreferencesFields,
|
|
@@ -147,6 +147,13 @@ type BaseFilter = {
|
|
|
147
147
|
* intersects with it (analytics kernel P2a-01).
|
|
148
148
|
*/
|
|
149
149
|
dateOwner?: 'global_date';
|
|
150
|
+
/**
|
|
151
|
+
* Only for a mapping `relationship` target (relationship filter reach,
|
|
152
|
+
* RF-D10): the server resolves exactly these ids or blocks the card.
|
|
153
|
+
*/
|
|
154
|
+
relationshipRoute?: {
|
|
155
|
+
relationshipIds: string[];
|
|
156
|
+
};
|
|
150
157
|
};
|
|
151
158
|
type FilterForString = BaseFilter & {
|
|
152
159
|
operation: 'like' | 'not like';
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* only
|
|
2
|
+
* Opens and closes the sheet's screen-size bar (responsive layouts RL-D19,
|
|
3
|
+
* RL-D21). While editing, the bar shows Desktop, Laptop, Tablet, Phone and
|
|
4
|
+
* Small phone and lets Tablet and Phone be customized; while viewing, it is a
|
|
5
|
+
* look-only preview starting at the size the grid shows now. Closed by default.
|
|
6
|
+
* The host places it beside the Activity bell for people who can edit the
|
|
7
|
+
* dashboard. Reads only the dashboard store, so semaphor-app mounts it in its
|
|
8
|
+
* own toolbar too.
|
|
6
9
|
*/
|
|
7
10
|
export declare function ScreenSizePreviewButton(): import("react").JSX.Element | null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SemaphorFilterReachEntry } from '../../../shared/analytics-protocol/index.js';
|
|
1
2
|
import { MatrixCardCatalog } from '../../../lib/matrix-table/matrix-card-adapter.js';
|
|
2
3
|
import { TCard, TFrame } from '../../../lib/types/common-types.js';
|
|
3
4
|
import { MatrixDeliveryContext } from '../../../lib/matrix-table/matrix-delivery.js';
|
|
@@ -9,6 +10,8 @@ type Props = {
|
|
|
9
10
|
capabilities?: MatrixInteractionHost['capabilities'];
|
|
10
11
|
onSizingChange?: (sizes: Record<string, number>) => void;
|
|
11
12
|
onDeliveryChange?: (context: MatrixDeliveryContext | undefined) => void;
|
|
13
|
+
/** The latest window's per-filter report, for the card's filter info (relationship filter reach RF-D13). */
|
|
14
|
+
onFilterReachChange?: (filterReach: SemaphorFilterReachEntry[]) => void;
|
|
12
15
|
mode: 'dashboard' | 'expanded' | 'editor';
|
|
13
16
|
};
|
|
14
17
|
/** One renderer adapter for dashboard, editor and expanded hosts. */
|
package/dist/types/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { C as s, E as r, V as l, i as o, c as i, g as n, f as d, b as m, e as u, d as E, a as c, u as p, s as C, h as T, j as D, q as A, o as I, m as _, n as F, p as S, k as b, l as L, r as f, t as N } from "../chunks/table-settings-
|
|
1
|
+
import { C as s, E as r, V as l, i as o, c as i, g as n, f as d, b as m, e as u, d as E, a as c, u as p, s as C, h as T, j as D, q as A, o as I, m as _, n as F, p as S, k as b, l as L, r as f, t as N } from "../chunks/table-settings-WysCBj62.js";
|
|
2
2
|
import { C as y, D as M, L as g, P as h, e as x, g as O, j as V, h as k, k as w, d as U, b as B, i as K, c as z, n as v, f as P } from "../chunks/validators-C-aOQlTB.js";
|
|
3
3
|
import { D as q } from "../chunks/token-types-BMqRmT-C.js";
|
|
4
|
-
import { B as Q, a as j, p as W, r as J } from "../chunks/bookmark-state-
|
|
4
|
+
import { B as Q, a as j, p as W, r as J } from "../chunks/bookmark-state-Cu-a5ie_.js";
|
|
5
5
|
import { r as H, a as Z } from "../chunks/pivot-result-identity-C-Q1j1Wb.js";
|
|
6
6
|
import { D as ee } from "../chunks/report-runtime-context-hWiTCzFV.js";
|
|
7
7
|
const e = [
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TFilter } from '../../components/surfboard/filter/types.js';
|
|
2
2
|
import { DashboardInputScope, TCard, TDashboard } from '../types/common-types.js';
|
|
3
|
-
import { DashboardFilterApplication, DashboardFilterCardApplication, DashboardFilterTarget, DashboardFilterTargetField } from '../../shared/dashboard-authoring/index.js';
|
|
3
|
+
import { DashboardFilterApplication, DashboardFilterCardApplication, DashboardFilterRelationshipTarget, DashboardFilterFieldTarget, DashboardFilterTarget, DashboardFilterTargetField, DashboardFilterOptionSource, FilterReachPreviewCard, FilterReachCardPreview, FilterReachPathOption } from '../../shared/dashboard-authoring/index.js';
|
|
4
|
+
import { SemaphorRelationshipRoute, SemaphorSkippedConstraintReason } from '../../shared/analytics-protocol/index.js';
|
|
4
5
|
import { FilterRef, ReachedCard } from '../../shared/dashboard-authoring/filter-model/index.js';
|
|
5
6
|
/**
|
|
6
7
|
* Filter mapping (one filter model M3, SPEC 4.4): the Cards tab of any filter
|
|
@@ -9,19 +10,169 @@ import { FilterRef, ReachedCard } from '../../shared/dashboard-authoring/filter-
|
|
|
9
10
|
*/
|
|
10
11
|
export type DashboardFilterMappingCandidateCatalog = {
|
|
11
12
|
status: 'ready';
|
|
12
|
-
targets:
|
|
13
|
+
targets: DashboardFilterFieldTarget[];
|
|
13
14
|
} | {
|
|
14
15
|
status: 'metadataUnavailable';
|
|
15
16
|
message?: string;
|
|
16
17
|
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
/**
|
|
19
|
+
* What the author decided for a card, as the draft stands: what Accept saves
|
|
20
|
+
* (relationship filter reach S-D, RF-INV-14). A change staged in this
|
|
21
|
+
* popover, else the card's saved entry, else Auto.
|
|
22
|
+
*/
|
|
23
|
+
export type DashboardFilterCardDecision =
|
|
24
|
+
/** No entry of its own: the card applies the filter on its own field when that is proven, else through the domain's relationships. */
|
|
25
|
+
{
|
|
26
|
+
kind: 'auto';
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'field';
|
|
29
|
+
target: DashboardFilterFieldTarget;
|
|
30
|
+
}
|
|
31
|
+
/** A chosen relationship path (RF-D10). */
|
|
32
|
+
| {
|
|
33
|
+
kind: 'path';
|
|
34
|
+
target: DashboardFilterRelationshipTarget;
|
|
20
35
|
} | {
|
|
21
36
|
kind: 'excluded';
|
|
22
37
|
};
|
|
23
|
-
|
|
24
|
-
export type
|
|
38
|
+
/** Where a row's decision comes from: a change in this popover, the saved mapping, or neither. */
|
|
39
|
+
export type DashboardFilterDecisionOrigin = 'staged' | 'saved' | 'none';
|
|
40
|
+
/** What runs for a card's decision, as the draft stands (RF-INV-14). */
|
|
41
|
+
export type DashboardFilterCardOutcome =
|
|
42
|
+
/** On a field of the card: the one the author bound, the one Auto proves (or a click borrows), or the one a SQL card takes the value by. */
|
|
43
|
+
{
|
|
44
|
+
kind: 'appliesOnField';
|
|
45
|
+
target: DashboardFilterFieldTarget;
|
|
46
|
+
how: 'bound';
|
|
47
|
+
} | {
|
|
48
|
+
kind: 'appliesOnField';
|
|
49
|
+
target: DashboardFilterFieldTarget;
|
|
50
|
+
how: 'automatic';
|
|
51
|
+
} | {
|
|
52
|
+
kind: 'appliesOnField';
|
|
53
|
+
target: DashboardFilterFieldTarget;
|
|
54
|
+
how: 'sql';
|
|
55
|
+
name: string;
|
|
56
|
+
}
|
|
57
|
+
/** Through the domain's relationships, on the server's route. */
|
|
58
|
+
| {
|
|
59
|
+
kind: 'appliesThroughPath';
|
|
60
|
+
route: SemaphorRelationshipRoute;
|
|
61
|
+
}
|
|
62
|
+
/** The card's query already uses the value's dataset, so no path is needed (ledger R-05). */
|
|
63
|
+
| {
|
|
64
|
+
kind: 'appliesOnOwnData';
|
|
65
|
+
}
|
|
66
|
+
/** Auto, and more than one equally preferred path: the card skips the filter until one is chosen; Accept isn't refused (RF-D28). */
|
|
67
|
+
| {
|
|
68
|
+
kind: 'needsPath';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Auto, and the card's fields need the author: a same-named field to
|
|
72
|
+
* accept, a SQL card that takes the value by name until a field is
|
|
73
|
+
* chosen, or a choice among fields, which refuses Accept.
|
|
74
|
+
*/
|
|
75
|
+
| {
|
|
76
|
+
kind: 'needsField';
|
|
77
|
+
need: 'accept';
|
|
78
|
+
suggestion: DashboardFilterFieldTarget;
|
|
79
|
+
reason?: SemaphorSkippedConstraintReason;
|
|
80
|
+
} | {
|
|
81
|
+
kind: 'needsField';
|
|
82
|
+
need: 'sqlByName';
|
|
83
|
+
name?: string;
|
|
84
|
+
reason?: SemaphorSkippedConstraintReason;
|
|
85
|
+
} | {
|
|
86
|
+
kind: 'needsField';
|
|
87
|
+
need: 'choose';
|
|
88
|
+
reason?: SemaphorSkippedConstraintReason;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The filter doesn't reach the card, with the server's reason or the
|
|
92
|
+
* card's guidance when there is one. `unmatched`: a field a click carries
|
|
93
|
+
* matches none of the card's fields, so the click drops it (no choice).
|
|
94
|
+
*/
|
|
95
|
+
| {
|
|
96
|
+
kind: 'notApplied';
|
|
97
|
+
reason?: SemaphorSkippedConstraintReason;
|
|
98
|
+
message?: string;
|
|
99
|
+
unmatched?: true;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The decision can't run: a stale field, a path the domain no longer has,
|
|
103
|
+
* a path for another value field. Refuses Accept. `target`: the field that
|
|
104
|
+
* can't run when the decision doesn't name it (a click's borrowed binding).
|
|
105
|
+
*/
|
|
106
|
+
| {
|
|
107
|
+
kind: 'blocked';
|
|
108
|
+
message: string;
|
|
109
|
+
reason?: SemaphorSkippedConstraintReason;
|
|
110
|
+
target?: DashboardFilterFieldTarget;
|
|
111
|
+
} | {
|
|
112
|
+
kind: 'excluded';
|
|
113
|
+
}
|
|
114
|
+
/** Waiting for the server's answer for this decision, or the request failed (ledger R-08). */
|
|
115
|
+
| {
|
|
116
|
+
kind: 'checking';
|
|
117
|
+
failed?: true;
|
|
118
|
+
}
|
|
119
|
+
/** The card's source isn't chosen yet, or its fields couldn't be loaded, which refuses Accept. */
|
|
120
|
+
| {
|
|
121
|
+
kind: 'unavailable';
|
|
122
|
+
cause: 'source' | 'fields';
|
|
123
|
+
message?: string;
|
|
124
|
+
reason?: SemaphorSkippedConstraintReason;
|
|
125
|
+
};
|
|
126
|
+
type OutcomeOf<K extends DashboardFilterCardOutcome['kind']> = Extract<DashboardFilterCardOutcome, {
|
|
127
|
+
kind: K;
|
|
128
|
+
}>;
|
|
129
|
+
/**
|
|
130
|
+
* A card's decision with what can run for it: exactly the pairs `cardRow`
|
|
131
|
+
* makes (RF-INV-14). A row changed after `cardRow` into another pair, such
|
|
132
|
+
* as Automatic with a bound field, doesn't compile (ledger R-27).
|
|
133
|
+
*/
|
|
134
|
+
export type DashboardFilterCardState = {
|
|
135
|
+
decision: Extract<DashboardFilterCardDecision, {
|
|
136
|
+
kind: 'auto';
|
|
137
|
+
}>;
|
|
138
|
+
outcome: Extract<DashboardFilterCardOutcome, {
|
|
139
|
+
kind: 'appliesOnField';
|
|
140
|
+
how: 'automatic' | 'sql';
|
|
141
|
+
}> | OutcomeOf<'appliesThroughPath' | 'appliesOnOwnData' | 'needsPath' | 'needsField' | 'notApplied' | 'blocked' | 'checking' | 'unavailable'>;
|
|
142
|
+
} | {
|
|
143
|
+
decision: Extract<DashboardFilterCardDecision, {
|
|
144
|
+
kind: 'field';
|
|
145
|
+
}>;
|
|
146
|
+
outcome: Extract<DashboardFilterCardOutcome, {
|
|
147
|
+
kind: 'appliesOnField';
|
|
148
|
+
how: 'bound';
|
|
149
|
+
}> | OutcomeOf<'blocked' | 'notApplied' | 'unavailable'>;
|
|
150
|
+
} | {
|
|
151
|
+
decision: Extract<DashboardFilterCardDecision, {
|
|
152
|
+
kind: 'path';
|
|
153
|
+
}>;
|
|
154
|
+
outcome: OutcomeOf<'appliesThroughPath' | 'appliesOnOwnData' | 'checking' | 'blocked' | 'notApplied'>;
|
|
155
|
+
} | {
|
|
156
|
+
decision: Extract<DashboardFilterCardDecision, {
|
|
157
|
+
kind: 'excluded';
|
|
158
|
+
}>;
|
|
159
|
+
outcome: OutcomeOf<'excluded' | 'unavailable' | 'notApplied'>;
|
|
160
|
+
};
|
|
161
|
+
/** What a row shows, in the names the Cards tab has always used; read from `presentDashboardFilterMappingRow`. */
|
|
162
|
+
export type DashboardFilterMappingRowState = 'pendingSource' | 'automatic' | 'suggested' | 'needsMapping' | 'mapped' | 'notApplicable' | 'excluded' | 'invalidMapping' | 'metadataUnavailable'
|
|
163
|
+
/** Auto, through the domain's relationships (with a route), or on the card's own data (none). */
|
|
164
|
+
| 'relationship'
|
|
165
|
+
/** Auto, and more than one equally preferred path (P-7, RF-D10). */
|
|
166
|
+
| 'chooseRoute'
|
|
167
|
+
/** Waiting for the server's relationship answer, or it failed. */
|
|
168
|
+
| 'relationshipChecking';
|
|
169
|
+
/**
|
|
170
|
+
* One card in the Cards tab: the author's decision and what runs for it
|
|
171
|
+
* (`DashboardFilterCardState`), made only by `cardRow`. Every reader (the
|
|
172
|
+
* panel, the summary, Accept, the click review) reads these two, through
|
|
173
|
+
* `presentDashboardFilterMappingRow` for display.
|
|
174
|
+
*/
|
|
175
|
+
export type DashboardFilterMappingDraftRow = DashboardFilterCardState & {
|
|
25
176
|
cardId: string;
|
|
26
177
|
/** The panel reads the title and meta line from it. */
|
|
27
178
|
card: TCard;
|
|
@@ -31,13 +182,150 @@ export type DashboardFilterMappingDraftRow = {
|
|
|
31
182
|
/** The section's title, for a card in a Document section. */
|
|
32
183
|
sectionTitle?: string;
|
|
33
184
|
executionKind: 'config' | 'sql' | 'unconfigured';
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
185
|
+
decisionOrigin: DashboardFilterDecisionOrigin;
|
|
186
|
+
/** The card's fields that can take the filter. */
|
|
187
|
+
fields: DashboardFilterFieldTarget[];
|
|
188
|
+
/** The card's equally preferred paths when it has a tie, whatever the decision (RF-D27). */
|
|
189
|
+
paths: FilterReachPathOption[];
|
|
190
|
+
/** The card's saved entry, as saved. */
|
|
37
191
|
persistedApplication?: DashboardFilterCardApplication;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
192
|
+
};
|
|
193
|
+
/** The row's control, as it reads when closed. */
|
|
194
|
+
export type DashboardFilterMappingRowTrigger = {
|
|
195
|
+
kind: 'notApplied';
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* A field, with "Auto ·" or "Suggested ·" before it. `muted`: the field
|
|
199
|
+
* doesn't apply yet (a suggestion), so all of it reads quiet.
|
|
200
|
+
*/
|
|
201
|
+
| {
|
|
202
|
+
kind: 'field';
|
|
203
|
+
target: DashboardFilterFieldTarget;
|
|
204
|
+
prefix?: 'Auto' | 'Suggested';
|
|
205
|
+
muted?: true;
|
|
206
|
+
}
|
|
207
|
+
/** A SQL card's Auto: the field it takes the value by. */
|
|
208
|
+
| {
|
|
209
|
+
kind: 'sqlAuto';
|
|
210
|
+
target: DashboardFilterFieldTarget;
|
|
211
|
+
name: string;
|
|
212
|
+
}
|
|
213
|
+
/** A path in words, with "Auto ·" before it when the domain's relationships chose it. */
|
|
214
|
+
| {
|
|
215
|
+
kind: 'route';
|
|
216
|
+
route: SemaphorRelationshipRoute;
|
|
217
|
+
auto: boolean;
|
|
218
|
+
} | {
|
|
219
|
+
kind: 'checking';
|
|
220
|
+
} | {
|
|
221
|
+
kind: 'text';
|
|
222
|
+
text: string;
|
|
223
|
+
tone: 'muted' | 'strong' | 'attention';
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* What Automatic does on the card, said under its menu entry: the path or
|
|
227
|
+
* field it uses, that it skips the card until a path is chosen, or that it
|
|
228
|
+
* doesn't reach the card. Absent when not known for the row's decision.
|
|
229
|
+
*/
|
|
230
|
+
export type DashboardFilterAutoDescription = {
|
|
231
|
+
kind: 'skipsUntilPathChosen';
|
|
232
|
+
} | {
|
|
233
|
+
kind: 'route';
|
|
234
|
+
route: SemaphorRelationshipRoute;
|
|
235
|
+
} | {
|
|
236
|
+
kind: 'ownData';
|
|
237
|
+
} | {
|
|
238
|
+
kind: 'field';
|
|
239
|
+
target: DashboardFilterFieldTarget;
|
|
240
|
+
} | {
|
|
241
|
+
kind: 'checking';
|
|
242
|
+
} | {
|
|
243
|
+
kind: 'notApplied';
|
|
244
|
+
reason?: SemaphorSkippedConstraintReason;
|
|
245
|
+
};
|
|
246
|
+
/** A line under the row. */
|
|
247
|
+
export type DashboardFilterMappingRowNote =
|
|
248
|
+
/** A chosen path that can't run: the server's reason, else its message. */
|
|
249
|
+
{
|
|
250
|
+
kind: 'pathBlocked';
|
|
251
|
+
message: string;
|
|
252
|
+
reason?: SemaphorSkippedConstraintReason;
|
|
253
|
+
} | {
|
|
254
|
+
kind: 'fieldBlocked';
|
|
255
|
+
} | {
|
|
256
|
+
kind: 'needsPath';
|
|
257
|
+
} | {
|
|
258
|
+
kind: 'fieldsUnavailable';
|
|
259
|
+
message: string;
|
|
260
|
+
} | {
|
|
261
|
+
kind: 'sqlPinnedSources';
|
|
262
|
+
};
|
|
263
|
+
/**
|
|
264
|
+
* What a row shows, counts as and offers: one reading of its decision and
|
|
265
|
+
* outcome (RF-INV-14). The panel, the popover summary and the click review
|
|
266
|
+
* read rows only through it.
|
|
267
|
+
*/
|
|
268
|
+
export type DashboardFilterMappingRowView = {
|
|
269
|
+
state: DashboardFilterMappingRowState;
|
|
270
|
+
/** The status column of the table review. */
|
|
271
|
+
label: string;
|
|
272
|
+
/**
|
|
273
|
+
* Colour means something needs fixing (relationship filter reach R-31):
|
|
274
|
+
* `review` (amber) a field must be chosen before saving, `invalid` (red) a
|
|
275
|
+
* decision that no longer runs. Everything else is `quiet`, offers too.
|
|
276
|
+
*/
|
|
277
|
+
tone: 'quiet' | 'review' | 'invalid';
|
|
278
|
+
/**
|
|
279
|
+
* How the row counts in the summary: applied, an open offer (a suggested
|
|
280
|
+
* field, a path to choose), not applied, a field to choose, or invalid;
|
|
281
|
+
* none while its source or the server's answer is pending.
|
|
282
|
+
*/
|
|
283
|
+
count?: 'covered' | 'suggested' | 'pathChoice' | 'excluded' | 'needsChoice' | 'invalid';
|
|
284
|
+
/** Something breaks or blocks saving: a field to choose, or invalid. The Cards tab dot and the chip warning. */
|
|
285
|
+
attention: boolean;
|
|
286
|
+
/** A suggested field the row offers to use in one click ("Use"). */
|
|
287
|
+
suggestion?: DashboardFilterFieldTarget;
|
|
288
|
+
/** Accept is refused while the row stands: a decision that can't run, a field to choose, fields not loaded. */
|
|
289
|
+
blocksAccept: boolean;
|
|
290
|
+
/** A menu, or a control that only says why there is nothing to choose. */
|
|
291
|
+
control: {
|
|
292
|
+
kind: 'menu';
|
|
293
|
+
} | {
|
|
294
|
+
kind: 'static';
|
|
295
|
+
text: string;
|
|
296
|
+
offerFieldsRetry: boolean;
|
|
297
|
+
};
|
|
298
|
+
trigger: DashboardFilterMappingRowTrigger;
|
|
299
|
+
border: 'default' | 'review' | 'invalid' | 'dashed';
|
|
300
|
+
note?: DashboardFilterMappingRowNote;
|
|
301
|
+
/**
|
|
302
|
+
* The menu, in order: Auto, the tie's paths, the card's fields, "Don't
|
|
303
|
+
* apply", and "Check relationships again" while a check failed. The
|
|
304
|
+
* decision is the one checked entry; picking it again changes nothing.
|
|
305
|
+
*/
|
|
306
|
+
menu: {
|
|
307
|
+
auto: {
|
|
308
|
+
label: string;
|
|
309
|
+
checked: boolean;
|
|
310
|
+
description?: DashboardFilterAutoDescription;
|
|
311
|
+
};
|
|
312
|
+
paths: Array<{
|
|
313
|
+
path: FilterReachPathOption;
|
|
314
|
+
checked: boolean;
|
|
315
|
+
}>;
|
|
316
|
+
/** The field a `field` decision binds, as the card lists it. */
|
|
317
|
+
checkedField?: DashboardFilterFieldTarget;
|
|
318
|
+
/**
|
|
319
|
+
* The field Auto proves on this card: picking it keeps Auto, so a filter
|
|
320
|
+
* with no mapping isn't mapped by confirming what already applies.
|
|
321
|
+
*/
|
|
322
|
+
autoField?: DashboardFilterFieldTarget;
|
|
323
|
+
excludedChecked: boolean;
|
|
324
|
+
/** "Check relationships again" (ledger R-08). */
|
|
325
|
+
offerRetry: boolean;
|
|
326
|
+
};
|
|
327
|
+
/** The row involves the domain's relationships, so "Manage relationships" helps. */
|
|
328
|
+
throughRelationships: boolean;
|
|
41
329
|
};
|
|
42
330
|
export type DashboardFilterMappingGroup = {
|
|
43
331
|
sheetId: string;
|
|
@@ -64,9 +352,15 @@ export type DashboardFilterMappingAcceptance = {
|
|
|
64
352
|
};
|
|
65
353
|
export type DashboardFilterMappingStatusSummary = {
|
|
66
354
|
coveredCount: number;
|
|
67
|
-
|
|
355
|
+
/** Cards with a suggested field to use; they aren't filtered until it's used. */
|
|
356
|
+
suggestedCount: number;
|
|
357
|
+
/** Cards with equally preferred paths; they aren't filtered until one is chosen. */
|
|
358
|
+
pathChoiceCount: number;
|
|
68
359
|
excludedCount: number;
|
|
360
|
+
/** Cards that need a field chosen before the mapping can be saved. */
|
|
361
|
+
needsChoiceCount: number;
|
|
69
362
|
invalidCount: number;
|
|
363
|
+
/** What breaks or blocks saving (needs a field, invalid): the Cards tab dot and the chip warning. */
|
|
70
364
|
attentionCount: number;
|
|
71
365
|
};
|
|
72
366
|
export type DashboardFilterMappingDraft = {
|
|
@@ -99,6 +393,11 @@ export type DashboardFilterMappingRequest = {
|
|
|
99
393
|
stagedDefinition?: TFilter;
|
|
100
394
|
/** The scope being edited, if changed; otherwise the saved scope, unnarrowed (OF-D8). */
|
|
101
395
|
stagedScope?: DashboardInputScope;
|
|
396
|
+
/**
|
|
397
|
+
* The Option Source being edited: undefined keeps the saved one, null drops
|
|
398
|
+
* it. The filter's value is judged by it, as the runtime will (ledger R-04).
|
|
399
|
+
*/
|
|
400
|
+
stagedOptionSource?: DashboardFilterOptionSource | null;
|
|
102
401
|
candidatesByCardId: Record<string, DashboardFilterMappingCandidateCatalog | undefined>;
|
|
103
402
|
/** Grounded field that supplies the current filter value. */
|
|
104
403
|
selectionField?: Pick<DashboardFilterTargetField, 'name' | 'sourceField'> & Partial<Pick<DashboardFilterTargetField, 'source'>>;
|
|
@@ -111,22 +410,47 @@ export type DashboardFilterMappingRequest = {
|
|
|
111
410
|
selectionDataType?: string;
|
|
112
411
|
/** Re-check saved targets after the option value field changed. */
|
|
113
412
|
revalidatePersistedTargets?: boolean;
|
|
114
|
-
decisionsByCardId?: Record<string,
|
|
413
|
+
decisionsByCardId?: Record<string, DashboardFilterCardDecision | undefined>;
|
|
414
|
+
/**
|
|
415
|
+
* The server's relationship preview per card (`POST /api/v1/filter-reach`,
|
|
416
|
+
* relationship filter reach Phase 3). The draft never resolves routes.
|
|
417
|
+
*/
|
|
418
|
+
relationshipPreviewsByCardId?: Record<string, FilterReachCardPreview | undefined>;
|
|
419
|
+
/**
|
|
420
|
+
* The server preview could not be read. Cards waiting on it say so instead
|
|
421
|
+
* of checking forever; nothing is saved for them, so Accept is not blocked
|
|
422
|
+
* (ledger R-08).
|
|
423
|
+
*/
|
|
424
|
+
relationshipPreviewFailed?: boolean;
|
|
115
425
|
/** Test seam for new binding ids; production uses opaque random UUIDs. */
|
|
116
426
|
createId?: () => string;
|
|
117
427
|
};
|
|
118
428
|
/**
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* whether an author needs to act.
|
|
429
|
+
* The Cards tab's counts, from each row's view: the one reading every
|
|
430
|
+
* surface uses to decide whether the author needs to act.
|
|
122
431
|
*/
|
|
123
432
|
export declare function summarizeDashboardFilterMappingRows(rows: DashboardFilterMappingDraftRow[]): DashboardFilterMappingStatusSummary;
|
|
433
|
+
/**
|
|
434
|
+
* What breaks or blocks saving, in words, for the chip warning, the Cards
|
|
435
|
+
* tab dot and the popover footer (relationship filter reach R-31). Absent
|
|
436
|
+
* when nothing does.
|
|
437
|
+
*/
|
|
438
|
+
export declare function describeDashboardFilterMappingAttention(summary: DashboardFilterMappingStatusSummary): {
|
|
439
|
+
tone: 'invalid' | 'review';
|
|
440
|
+
text: string;
|
|
441
|
+
} | undefined;
|
|
442
|
+
/**
|
|
443
|
+
* Open offers, in words, for the popover footer: cards that aren't filtered
|
|
444
|
+
* until the author uses a suggestion or chooses a path. Information, not a
|
|
445
|
+
* warning (R-31). Absent when there are none.
|
|
446
|
+
*/
|
|
447
|
+
export declare function describeDashboardFilterMappingOffers(summary: DashboardFilterMappingStatusSummary): string | undefined;
|
|
124
448
|
/**
|
|
125
449
|
* One Cards row for a source-qualified value field that is not a toolbar
|
|
126
450
|
* filter, such as a field a click carries. It is the same decision chain the
|
|
127
|
-
* toolbar filter's rows go through (`
|
|
128
|
-
*
|
|
129
|
-
*
|
|
451
|
+
* toolbar filter's rows go through (`cardRow`), so automatic, suggested,
|
|
452
|
+
* mapped, excluded and needs-mapping mean the same thing on every authoring
|
|
453
|
+
* surface. Equality is the only operation a click applies.
|
|
130
454
|
*/
|
|
131
455
|
export declare function buildDashboardFilterMappingDraftRowForValueField(params: {
|
|
132
456
|
card: TCard;
|
|
@@ -136,10 +460,47 @@ export declare function buildDashboardFilterMappingDraftRowForValueField(params:
|
|
|
136
460
|
sectionTitle?: string;
|
|
137
461
|
valueField: DashboardFilterTargetField;
|
|
138
462
|
catalog: DashboardFilterMappingCandidateCatalog | undefined;
|
|
139
|
-
decision
|
|
463
|
+
/** The click's own decision for the card: its binding, "Don't apply", or none (Auto). */
|
|
464
|
+
decision?: DashboardFilterCardDecision;
|
|
140
465
|
persistedApplication?: DashboardFilterCardApplication;
|
|
141
466
|
/** Bindings already accepted elsewhere for this value field, offered as inherited matches. */
|
|
142
467
|
acceptedTargets?: DashboardFilterTarget[];
|
|
468
|
+
/** A filter's binding Auto applies first (`cardRow`'s `borrowedTarget`). */
|
|
469
|
+
borrowedTarget?: DashboardFilterFieldTarget;
|
|
470
|
+
/** What a card with no matching field gets (`cardRow`'s `unmatchedField`). */
|
|
471
|
+
unmatchedField?: 'choose' | 'notApplied';
|
|
143
472
|
}): DashboardFilterMappingDraftRow;
|
|
473
|
+
/** The decision that saves a target the author picked: a field, or a path. */
|
|
474
|
+
export declare function dashboardFilterCardDecisionForTarget(target: DashboardFilterTarget): DashboardFilterCardDecision;
|
|
475
|
+
/**
|
|
476
|
+
* A card's decision as the draft stands, and where it comes from: a change
|
|
477
|
+
* staged in this popover, else the saved entry, else Auto. The rows and the
|
|
478
|
+
* preview's card list both read it here.
|
|
479
|
+
*/
|
|
480
|
+
export declare function draftCardDecision(staged: DashboardFilterCardDecision | undefined, persisted: DashboardFilterCardApplication | undefined): {
|
|
481
|
+
decision: DashboardFilterCardDecision;
|
|
482
|
+
origin: DashboardFilterDecisionOrigin;
|
|
483
|
+
};
|
|
484
|
+
/**
|
|
485
|
+
* What a row shows, counts as and offers, read from its decision and
|
|
486
|
+
* outcome only (relationship filter reach S-D, RF-INV-14).
|
|
487
|
+
*/
|
|
488
|
+
export declare function presentDashboardFilterMappingRow(row: DashboardFilterMappingDraftRow): DashboardFilterMappingRowView;
|
|
144
489
|
/** The one entry point of M3 (SPEC 4.4). Pure. */
|
|
145
490
|
export declare function draftDashboardFilterMapping(request: DashboardFilterMappingRequest): DashboardFilterMappingDraftResult;
|
|
491
|
+
/**
|
|
492
|
+
* The cards in a staged filter's scope whose relationship reach the server
|
|
493
|
+
* preview should resolve, each with the route the draft runs it with (ledger
|
|
494
|
+
* R-02): cards with a chosen route, staged or saved, and cards the card
|
|
495
|
+
* target decision runs through the domain's relationships when unmapped (row
|
|
496
|
+
* 7r). Empty when there are none, so no preview is requested.
|
|
497
|
+
*/
|
|
498
|
+
export declare function listRelationshipPreviewCards(params: {
|
|
499
|
+
ref: FilterRef;
|
|
500
|
+
dashboard: TDashboard;
|
|
501
|
+
stagedDefinition?: TFilter;
|
|
502
|
+
stagedScope?: DashboardInputScope;
|
|
503
|
+
stagedOptionSource?: DashboardFilterOptionSource | null;
|
|
504
|
+
decisionsByCardId?: Record<string, DashboardFilterCardDecision | undefined>;
|
|
505
|
+
}): FilterReachPreviewCard[];
|
|
506
|
+
export {};
|