react-semaphor 0.1.506 → 0.1.508
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/DATA_APP_SDK.md +56 -0
- package/dist/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +194 -172
- package/dist/appearance/index.cjs +1 -1
- package/dist/appearance/index.js +1 -1
- package/dist/appearance-runtime/index.cjs +1 -1
- package/dist/appearance-runtime/index.js +1 -1
- package/dist/brand-studio/index.cjs +2 -2
- package/dist/brand-studio/index.js +139 -119
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +3 -3
- package/dist/chunks/appearance-context-DzqCdhB4.cjs +1 -0
- package/dist/chunks/{appearance-context-XviHOhWJ.js → appearance-context-VJdrKi7r.js} +2 -1
- package/dist/chunks/{appearance-runtime-provider-D0xVQWnH.js → appearance-runtime-provider-CC4HT2Gi.js} +2 -2
- package/dist/chunks/{appearance-runtime-provider-Ca8rxO86.cjs → appearance-runtime-provider-D5pkvgE4.cjs} +1 -1
- package/dist/chunks/calculated-field-identity-BiTGmnST.cjs +1 -0
- package/dist/chunks/calculated-field-identity-CJL54uFx.js +1373 -0
- package/dist/chunks/{constants-NUleP4DY.js → card-config-utils-Bq1enstT.js} +260 -260
- package/dist/chunks/card-config-utils-CMO4_zVs.cjs +1 -0
- package/dist/chunks/{dashboard-briefing-launcher-DXTpU85p.js → dashboard-briefing-launcher-B9l0ZAbv.js} +12 -12
- package/dist/chunks/{dashboard-briefing-launcher-C8nDSDnV.cjs → dashboard-briefing-launcher-C4zsM3Hd.cjs} +1 -1
- package/dist/chunks/{dashboard-controls-CyL0yimg.js → dashboard-controls-BCQv4xWM.js} +16 -14
- package/dist/chunks/dashboard-controls-CWwllVOe.cjs +52 -0
- package/dist/chunks/{dashboard-json-5Jr3RudV.js → dashboard-json-BtU_q_0A.js} +9 -9
- package/dist/chunks/dashboard-json-DVj2xLsH.cjs +1 -0
- package/dist/chunks/edit-dashboard-visual-CO2IVBOq.cjs +172 -0
- package/dist/chunks/{edit-dashboard-visual-C7X-um9g.js → edit-dashboard-visual-RgFUx-py.js} +1986 -1990
- package/dist/chunks/{editor-action-buttons-CcDm8nA5.cjs → editor-action-buttons-BE8Fby6n.cjs} +2 -2
- package/dist/chunks/{editor-action-buttons-C5Wja_J4.js → editor-action-buttons-D-MaqTIs.js} +6 -6
- package/dist/chunks/field-aggregations-DUb0NU6c.js +1229 -0
- package/dist/chunks/field-aggregations-jSi77h9Z.cjs +1 -0
- package/dist/chunks/{field-dependencies-DVl2p1Nm.js → field-dependencies-Cl97kkHy.js} +30 -34
- package/dist/chunks/{field-dependencies-r_U0CGQ-.cjs → field-dependencies-DIab72rQ.cjs} +1 -1
- package/dist/chunks/{index-BVr4fcCB.js → index-0pdaQ9e1.js} +5 -5
- package/dist/chunks/index-BaIrLSBb.cjs +1422 -0
- package/dist/chunks/{index-De2QNsqV.js → index-ByiS9sB4.js} +45343 -43665
- package/dist/chunks/{index-C9KXfCkC.js → index-CLIro-EG.js} +3 -0
- package/dist/chunks/index-Cx3qmRUB.cjs +1 -0
- package/dist/chunks/{index-BlYf8gNa.cjs → index-DhlVxvyI.cjs} +1 -1
- package/dist/chunks/{matrix-card-DACDwdTq.js → matrix-card-CnKQpnsj.js} +1 -1
- package/dist/chunks/{matrix-card-CRXcmAjp.cjs → matrix-card-U4c72doZ.cjs} +1 -1
- package/dist/chunks/{matrix-control-sources-ClQzIk7E.js → matrix-control-sources-CRRdP03Q.js} +165 -134
- package/dist/chunks/matrix-control-sources-FjxGIbqk.cjs +1 -0
- package/dist/chunks/{matrix-formatter-7GLTcBuy.cjs → matrix-formatter-CveLJo6S.cjs} +1 -1
- package/dist/chunks/{matrix-formatter-xsq7n_e6.js → matrix-formatter-ZVS5QOuq.js} +2 -2
- package/dist/chunks/matrix-member-presentation-CFHjdrxT.cjs +1 -0
- package/dist/chunks/matrix-member-presentation-CzGZJd3a.js +182 -0
- package/dist/chunks/matrix-operation-contract-DoiWTUbT.cjs +1 -0
- package/dist/chunks/matrix-operation-contract-xL8IhFzp.js +1802 -0
- package/dist/chunks/{pivot-header-presentation-3wqWChFd.cjs → pivot-header-presentation-Cxz8-06f.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-D44ODZGn.js → pivot-header-presentation-DVylCBHB.js} +2 -2
- package/dist/chunks/{pivot-result-lifecycle-DZ0ZSMoM.cjs → pivot-result-lifecycle-BiERyXnS.cjs} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-BSmqVkVG.js → pivot-result-lifecycle-CmjpW7qG.js} +1 -1
- package/dist/chunks/{report-preferences-dialog-xADifRXs.js → report-preferences-dialog-BbkXcnnn.js} +4 -4
- package/dist/chunks/report-preferences-dialog-C9rpWgQZ.cjs +1 -0
- package/dist/chunks/{search-BHsQIWBV.js → selection-reducer-B94WgZ9V.js} +55 -11
- package/dist/chunks/selection-reducer-CGKKsaPa.cjs +26 -0
- package/dist/chunks/{semantic-format-BhIL1PXP.cjs → semantic-format-BzH69TRq.cjs} +1 -1
- package/dist/chunks/{semantic-format-C3amkGmY.js → semantic-format-CBlRO8Aw.js} +1 -1
- package/dist/chunks/{switch-DHGiC0aU.js → switch-CD4uGTZI.js} +7450 -7694
- package/dist/chunks/switch-iC1x2dcE.cjs +134 -0
- package/dist/chunks/token-types-Ahh5u4iT.cjs +1 -0
- package/dist/chunks/token-types-CPde8_LG.js +8 -0
- package/dist/chunks/{update-policy-Cc9h57pA.cjs → update-policy-COjFudhl.cjs} +1 -1
- package/dist/chunks/{update-policy-eTcz52jO.js → update-policy-D9q1Tz8k.js} +1 -1
- 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 +734 -622
- 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 +94 -92
- package/dist/data-app-codegen-node/index.js +337 -333
- package/dist/data-app-sdk/index.cjs +9 -9
- package/dist/data-app-sdk/index.js +1091 -969
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +104 -96
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +2 -2
- package/dist/format-utils/index.cjs +1 -1
- package/dist/format-utils/index.js +8 -8
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -15
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +2 -2
- package/dist/types/brand-studio/brand-studio-draft.d.ts +3 -1
- package/dist/types/components/dashboard/card-selection-pill.d.ts +5 -0
- package/dist/types/components/dashboard/dashboard-container.d.ts +1 -1
- package/dist/types/components/dashboard/drill-breadcrumb.d.ts +1 -0
- package/dist/types/components/dashboard/drill-navigation-controls.d.ts +3 -3
- package/dist/types/components/interactions/applied-filters-display.d.ts +6 -1
- package/dist/types/components/interactions/click-to-filter-review-dialog.d.ts +21 -0
- package/dist/types/components/interactions/dashboard-drill-host.d.ts +13 -0
- package/dist/types/components/interactions/filter-badge-tooltip.d.ts +4 -4
- package/dist/types/components/interactions/insight-modal.d.ts +4 -14
- package/dist/types/components/interactions/insight-viewer.d.ts +7 -19
- package/dist/types/components/interactions/interactions-sheet.d.ts +6 -0
- package/dist/types/components/interactions/panels/click-to-filter-panel.d.ts +20 -0
- package/dist/types/components/interactions/reusable/interaction-selection-popover.d.ts +2 -2
- package/dist/types/components/interactions/sheet/action-editor.d.ts +17 -0
- package/dist/types/components/interactions/sheet/action-meta.d.ts +45 -0
- package/dist/types/components/interactions/sheet/action-picker.d.ts +7 -0
- package/dist/types/components/interactions/sheet/click-outcome-preview.d.ts +10 -0
- package/dist/types/components/interactions/sheet/interactions-home.d.ts +28 -0
- package/dist/types/components/interactions/sheet/sheet-parts.d.ts +37 -0
- package/dist/types/components/surfboard/filter/dashboard-filter-mapping-panel.d.ts +28 -1
- package/dist/types/components/surfboard/filter/selection-chip.d.ts +11 -0
- package/dist/types/components/surfboard/filter/selection-filter-section.d.ts +4 -0
- package/dist/types/components/surfboard/filter/use-dashboard-filter-mapping-popover.d.ts +3 -0
- package/dist/types/components/ui/resizable.d.ts +1 -1
- package/dist/types/components/visual/matrix-table/matrix-interaction-actions.d.ts +13 -1
- package/dist/types/components/visual/matrix-table/matrix-selection-click.d.ts +6 -0
- package/dist/types/data-app-sdk/adapters.d.ts +3 -2
- package/dist/types/data-app-sdk/builders.d.ts +2 -1
- package/dist/types/data-app-sdk/contracts.d.ts +44 -2
- package/dist/types/data-app-sdk/index.d.ts +1 -0
- package/dist/types/data-app-sdk/query-request.d.ts +7 -2
- package/dist/types/data-app-sdk/selection.d.ts +2 -0
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +24 -23
- package/dist/types/lib/appearance/types.d.ts +3 -1
- package/dist/types/lib/briefings/briefing-attachment-model.d.ts +0 -2
- package/dist/types/lib/contexts/interactions-popover-context.d.ts +1 -8
- package/dist/types/lib/dashboard/click-to-filter-card-references.d.ts +23 -0
- package/dist/types/lib/dashboard-inputs/build-normalized-dashboard-inputs.d.ts +16 -2
- package/dist/types/lib/dashboard-inputs/build-selection-dashboard-inputs.d.ts +31 -0
- package/dist/types/lib/dashboard-inputs/click-to-filter-emitted-fields.d.ts +17 -0
- package/dist/types/lib/dashboard-inputs/click-to-filter-mapping-draft.d.ts +99 -0
- package/dist/types/lib/dashboard-inputs/click-to-filter-sheet-reach.d.ts +12 -0
- package/dist/types/lib/dashboard-inputs/dashboard-filter-mapping-authoring.d.ts +18 -1
- package/dist/types/lib/dashboard-inputs/dashboard-filter-mapping-candidate-metadata.d.ts +4 -1
- package/dist/types/lib/dashboard-inputs/dashboard-input-scope.d.ts +10 -0
- package/dist/types/lib/dashboard-inputs/dashboard-input-snapshot.d.ts +8 -1
- package/dist/types/lib/dashboard-inputs/index.d.ts +1 -0
- package/dist/types/lib/dashboard-inputs/resolve-dashboard-input-context.d.ts +18 -7
- package/dist/types/lib/dashboard-inputs/resolve-field-date-comparison-coverage.d.ts +5 -2
- package/dist/types/lib/dashboard-inputs/resolve-selection-input.d.ts +77 -0
- package/dist/types/lib/dashboard-inputs/selection-targets.d.ts +26 -0
- package/dist/types/lib/dashboard-inputs/transient-input-context.d.ts +102 -0
- package/dist/types/lib/dashboard-navigation/build-carried-click-context.d.ts +50 -0
- package/dist/types/lib/dashboard-navigation/describe-carried-context.d.ts +11 -0
- package/dist/types/lib/dashboard-navigation/index.d.ts +1 -0
- package/dist/types/lib/dashboard-navigation/navigation-state.d.ts +120 -0
- package/dist/types/lib/dashboard-navigation/run-one-off-drill.d.ts +11 -0
- package/dist/types/lib/dashboard-navigation/use-transient-contexts.d.ts +17 -0
- package/dist/types/lib/dashboard-view-state/card-view-state.d.ts +48 -0
- package/dist/types/lib/dashboard-view-state/drill-path.d.ts +20 -0
- package/dist/types/lib/dashboard-view-state/index.d.ts +2 -0
- package/dist/types/lib/download-pdf.d.ts +0 -3
- package/dist/types/lib/formatters/metric-formatting.d.ts +1 -1
- package/dist/types/lib/hooks/ai/dashboard-context.d.ts +15 -8
- package/dist/types/lib/hooks/chartjs/use-chart-blur.d.ts +10 -2
- package/dist/types/lib/hooks/interactions/{use-event-engine.d.ts → use-drill-actions.d.ts} +28 -7
- package/dist/types/lib/hooks/selection/use-active-selections.d.ts +15 -0
- package/dist/types/lib/hooks/selection/use-click-to-filter-mapping-draft.d.ts +20 -0
- package/dist/types/lib/hooks/selection/use-selection-click.d.ts +34 -0
- package/dist/types/lib/hooks/selection/use-selection-gestures.d.ts +38 -0
- package/dist/types/lib/hooks/selection/use-table-row-selection.d.ts +46 -0
- package/dist/types/lib/hooks/use-dashboard-card.d.ts +0 -2
- package/dist/types/lib/hooks/use-dashboard-filter-mapping-candidates.d.ts +18 -0
- package/dist/types/lib/hooks/use-dashboard-frame-query.d.ts +0 -1
- package/dist/types/lib/hooks/use-dashboard.d.ts +1 -3
- package/dist/types/lib/hooks/use-interactions-popover.d.ts +1 -8
- package/dist/types/lib/hooks/use-resolved-card-config.d.ts +6 -0
- package/dist/types/lib/interactions/click-outcome.d.ts +25 -0
- package/dist/types/lib/interactions/get-click-context-from-chartjs.d.ts +3 -1
- package/dist/types/lib/interactions/get-click-context-from-matrix.d.ts +1 -1
- package/dist/types/lib/interactions/get-click-context-from-table.d.ts +7 -0
- package/dist/types/lib/interactions/interaction-utils.d.ts +17 -1
- package/dist/types/lib/matrix-table/build-matrix-drill-to-detail.d.ts +15 -0
- package/dist/types/lib/matrix-table/matrix-card-interactions.d.ts +14 -3
- package/dist/types/lib/query-context/build-card-query-context.d.ts +19 -8
- package/dist/types/lib/query-context/build-dashboard-execution-snapshot.d.ts +5 -3
- package/dist/types/lib/query-context/build-dashboard-frame-base-query-contexts.d.ts +12 -4
- package/dist/types/lib/query-context/compile-selection-filters.d.ts +5 -0
- package/dist/types/lib/query-context/dashboard-filter-mapping-resolution.d.ts +46 -0
- package/dist/types/lib/query-context/filter-group-utils.d.ts +3 -0
- package/dist/types/lib/query-context/resolve-runtime-card-filters.d.ts +29 -0
- package/dist/types/lib/selection/click-to-filter-authoring-support.d.ts +9 -0
- package/dist/types/lib/selection/selection-from-click-context.d.ts +41 -0
- package/dist/types/lib/selection/selection-labels.d.ts +3 -0
- package/dist/types/lib/selection/selection-notices.d.ts +9 -0
- package/dist/types/lib/selection/selection-reducer.d.ts +46 -0
- package/dist/types/lib/stores/dashboard-store.d.ts +62 -17
- package/dist/types/lib/stores/editor-store.d.ts +1 -2
- package/dist/types/lib/stores/index.d.ts +0 -2
- package/dist/types/lib/types/common-types.d.ts +60 -6
- package/dist/types/lib/types/explorer-types.d.ts +1 -22
- package/dist/types/lib/types/interaction-types.d.ts +6 -198
- package/dist/types/lib/utils/calculate-context-aware-filters.d.ts +21 -12
- package/dist/types/lib/utils/card-utils.d.ts +11 -0
- package/dist/types/lib/utils/date-hierarchy-utils.d.ts +3 -1
- package/dist/types/lib/utils/drag-and-drop-utils.d.ts +1 -1
- package/dist/types/lib/utils/interaction-icons.d.ts +1 -1
- package/dist/types/shared/analytics-protocol/execution-input-schemas.d.ts +32 -32
- package/dist/types/shared/analytics-protocol/index.d.ts +2 -0
- package/dist/types/shared/analytics-protocol/selection-contract.d.ts +100 -0
- package/dist/types/shared/analytics-protocol/selection-filter-compiler.d.ts +12 -0
- package/dist/types/shared/dashboard-authoring/apply-group-by-override.d.ts +19 -0
- package/dist/types/shared/dashboard-authoring/click-to-filter-settings.d.ts +88 -0
- package/dist/types/shared/dashboard-authoring/contracts.d.ts +8 -0
- package/dist/types/shared/dashboard-authoring/index.d.ts +3 -0
- package/dist/types/shared/dashboard-authoring/linked-click-to-filter-overrides.d.ts +32 -0
- package/dist/types/shared/format-utils/matrix-continuation.d.ts +3 -3
- package/package.json +1 -1
- package/src/data-app-sdk/README.md +58 -1
- package/dist/chunks/appearance-context-tNjvTJj3.cjs +0 -1
- package/dist/chunks/calculated-field-identity-BTpUqfEu.js +0 -1276
- package/dist/chunks/calculated-field-identity-rMuXuzEY.cjs +0 -1
- package/dist/chunks/constants-vtu7_IUo.cjs +0 -1
- package/dist/chunks/dashboard-controls-DlxeddZN.cjs +0 -52
- package/dist/chunks/dashboard-json-DhS4yJfc.cjs +0 -1
- package/dist/chunks/edit-dashboard-visual-X3OCnivL.cjs +0 -172
- package/dist/chunks/field-aggregations-BU_3gHKR.js +0 -957
- package/dist/chunks/field-aggregations-CDCamEsQ.cjs +0 -1
- package/dist/chunks/index-C8XCKzB6.cjs +0 -1
- package/dist/chunks/index-DSa6RSdg.cjs +0 -1417
- package/dist/chunks/matrix-control-sources-CeC5EMyq.cjs +0 -1
- package/dist/chunks/matrix-member-presentation-E2B4k3ws.cjs +0 -1
- package/dist/chunks/matrix-member-presentation-qiHxv67e.js +0 -105
- package/dist/chunks/matrix-operation-contract-Cqy4EW2H.js +0 -1638
- package/dist/chunks/matrix-operation-contract-D9dLX-Wr.cjs +0 -1
- package/dist/chunks/report-preferences-dialog-7Vsc_fsG.cjs +0 -1
- package/dist/chunks/search-BqqhaMx9.cjs +0 -26
- package/dist/chunks/switch-BytP6QY8.cjs +0 -139
- package/dist/types/components/interactions/configuration-popover.d.ts +0 -1
- package/dist/types/components/interactions/interaction-card.d.ts +0 -59
- package/dist/types/components/interactions/interaction-event-handler.d.ts +0 -11
- package/dist/types/components/interactions/interactions-list.d.ts +0 -50
- package/dist/types/components/interactions/panels/cross-filter-panel.d.ts +0 -24
- package/dist/types/components/interactions/panels/inline-drill-panel.d.ts +0 -24
- package/dist/types/components/interactions/selectors/action-selector.d.ts +0 -31
- package/dist/types/components/interactions/selectors/trigger-selector.d.ts +0 -38
- package/dist/types/components/surfboard/filter/click-filter-section.d.ts +0 -5
- package/dist/types/lib/interactions/build-interaction-event.d.ts +0 -25
- package/dist/types/lib/interactions/convert-click-filters-to-filter-group.d.ts +0 -10
- package/dist/types/lib/interactions/execute-interaction-event.d.ts +0 -80
- package/dist/types/lib/interactions/field-utils.d.ts +0 -11
- package/dist/types/lib/interactions/handle-chart-click.d.ts +0 -75
- package/dist/types/lib/interactions/linked-interaction-utils.d.ts +0 -14
- package/dist/types/lib/interactions/source-card-filter-utils.d.ts +0 -9
- package/dist/types/lib/stores/drill-actions.d.ts +0 -139
- package/dist/types/lib/stores/interaction-store.d.ts +0 -113
- package/dist/types/lib/stores/pointer-interaction-store.d.ts +0 -18
package/dist/surfboard/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../chunks/index-BaIrLSBb.cjs"),r=require("../chunks/common-types-nBuCd3u2.cjs"),o=require("../chunks/report-preferences-dialog-C9rpWgQZ.cjs");exports.DisplayFormatPreferencesFields=e.DisplayFormatPreferencesFields;exports.Surfboard=e.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=r.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=r.EMPTY_SELECTION;exports.ReportPreferencesDialog=o.ReportPreferencesDialog;
|
package/dist/surfboard/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { b as a, a as o } from "../chunks/index-
|
|
1
|
+
import { b as a, a as o } from "../chunks/index-ByiS9sB4.js";
|
|
2
2
|
import { C as f, E } from "../chunks/common-types-C6cAQgyh.js";
|
|
3
|
-
import { R as t } from "../chunks/report-preferences-dialog-
|
|
3
|
+
import { R as t } from "../chunks/report-preferences-dialog-BbkXcnnn.js";
|
|
4
4
|
export {
|
|
5
5
|
f as CONTROL_CARD_DEFAULT_VALUE,
|
|
6
6
|
a as DisplayFormatPreferencesFields,
|
|
@@ -42,7 +42,7 @@ type RequiredTableAppearance = {
|
|
|
42
42
|
density: AppearanceDensity;
|
|
43
43
|
container: NonNullable<AppearanceTable['container']>;
|
|
44
44
|
header: Required<NonNullable<AppearanceTable['header']>>;
|
|
45
|
-
row: Required<NonNullable<AppearanceTable['row']>>;
|
|
45
|
+
row: Required<Omit<NonNullable<AppearanceTable['row']>, 'selectedBackground'>>;
|
|
46
46
|
cell: Required<NonNullable<AppearanceTable['cell']>>;
|
|
47
47
|
subtotal: Required<NonNullable<AppearanceTable['subtotal']>>;
|
|
48
48
|
grandTotal: Required<NonNullable<AppearanceTable['grandTotal']>>;
|
|
@@ -67,6 +67,8 @@ type PresetScheme = {
|
|
|
67
67
|
primaryForeground: string;
|
|
68
68
|
accent: string;
|
|
69
69
|
accentForeground: string;
|
|
70
|
+
/** What a viewer selected to filter by. A colored preset uses its primary. */
|
|
71
|
+
selection: string;
|
|
70
72
|
card: string;
|
|
71
73
|
cardForeground: string;
|
|
72
74
|
chartPalette: string[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TCard } from '../../lib/types/common-types.js';
|
|
2
|
+
/** On the source card while it holds a selection: what the click is doing, and a way out. */
|
|
3
|
+
export declare function CardSelectionPill({ card }: {
|
|
4
|
+
card: TCard;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -5,5 +5,5 @@ type ContainerProps = DashboardProps & HTMLAttributes<HTMLDivElement> & {
|
|
|
5
5
|
cardId?: string;
|
|
6
6
|
dashboardId?: string;
|
|
7
7
|
};
|
|
8
|
-
export declare function Container({ className, customStyle, onSave, onEvent, onDashboardLifecycleEvent, LoadingComponent, ErrorComponent, onChartElementClicked, id, authToken, currentTheme, appearance: _appearance, version, customCards, showAssistant, defaultFilterValues, defaultControlValues, controlContractOverrides, documentInputValues: _documentInputValues, dashboardInputExecutionSnapshot,
|
|
8
|
+
export declare function Container({ className, customStyle, onSave, onEvent, onDashboardLifecycleEvent, LoadingComponent, ErrorComponent, onChartElementClicked, id, authToken, currentTheme, appearance: _appearance, version, customCards, showAssistant, defaultFilterValues, defaultControlValues, controlContractOverrides, documentInputValues: _documentInputValues, dashboardInputExecutionSnapshot, presentationExecutionSnapshot, renderMode: _renderMode, onFilterValuesChange, selectedSheetId, eventHandlers, type, cardId, dashboardId, style, ...props }: ContainerProps): import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export {};
|
|
@@ -2,5 +2,6 @@ interface DrillBreadcrumbProps {
|
|
|
2
2
|
cardId: string;
|
|
3
3
|
className?: string;
|
|
4
4
|
}
|
|
5
|
+
/** The card's drill path, from card view state. Each crumb drills back up to its level. */
|
|
5
6
|
export declare function DrillBreadcrumb({ cardId, className }: DrillBreadcrumbProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
7
|
export {};
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* Floating UI controls for drill-through navigation.
|
|
5
5
|
* Displays:
|
|
6
6
|
* - Back button to return to previous dashboard
|
|
7
|
-
* -
|
|
8
|
-
* - Clear button to remove
|
|
7
|
+
* - Badges showing the click the viewer drilled through on
|
|
8
|
+
* - Clear button to remove the carried context
|
|
9
9
|
*
|
|
10
|
-
* Only visible
|
|
10
|
+
* Only visible on a dashboard the viewer drilled through to.
|
|
11
11
|
* Draggable to allow repositioning if blocking view.
|
|
12
12
|
*/
|
|
13
13
|
export declare function DrillNavigationControls(): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { ClickFilterCondition } from '../../lib/types/interaction-types.js';
|
|
2
2
|
import { TFilterValue, TFilter } from '../surfboard/filter/types.js';
|
|
3
|
+
import { CarriedContextItem } from '../../lib/dashboard-navigation/describe-carried-context.js';
|
|
3
4
|
interface AppliedFiltersDisplayProps {
|
|
5
|
+
/**
|
|
6
|
+
* Already described lines, for a carried context. Used instead of `filters`.
|
|
7
|
+
*/
|
|
8
|
+
items?: CarriedContextItem[];
|
|
4
9
|
/**
|
|
5
10
|
* Filters applied to the insight
|
|
6
11
|
* Can be either ClickFilterCondition (interaction filters) or TFilterValue (dashboard filters)
|
|
@@ -31,5 +36,5 @@ interface AppliedFiltersDisplayProps {
|
|
|
31
36
|
*/
|
|
32
37
|
icon?: React.ReactNode;
|
|
33
38
|
}
|
|
34
|
-
export declare function AppliedFiltersDisplay({ filters, filterDefinitions, contextMode, className, showLabel, labelText, icon, }: AppliedFiltersDisplayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
39
|
+
export declare function AppliedFiltersDisplay({ items, filters, filterDefinitions, contextMode, className, showLabel, labelText, icon, }: AppliedFiltersDisplayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
35
40
|
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DashboardFilterMappingFieldLabels } from '../../lib/dashboard-inputs/dashboard-filter-mapping-candidate-metadata.js';
|
|
2
|
+
import { ClickToFilterMappingDraft } from '../../lib/dashboard-inputs/click-to-filter-mapping-draft.js';
|
|
3
|
+
import { ClickToFilterSettings, NormalizedFilterDashboardInput } from '../../lib/types/common-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Which cards a click reaches and which field each clicked field lands on.
|
|
6
|
+
* Rows are the toolbar filter's `MappingRow`, so the field picker, search,
|
|
7
|
+
* grouping by source and field labels are the same components. Done applies
|
|
8
|
+
* the draft to the panel's settings; the popover's Save persists them.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ClickToFilterReviewDialog({ open, onOpenChange, sourceTitle, draft, settings, onSettingsChange, fieldLabels, filterInputs, isLoading, onRetry, }: {
|
|
11
|
+
open: boolean;
|
|
12
|
+
onOpenChange: (open: boolean) => void;
|
|
13
|
+
sourceTitle: string;
|
|
14
|
+
draft: ClickToFilterMappingDraft | undefined;
|
|
15
|
+
settings: ClickToFilterSettings;
|
|
16
|
+
onSettingsChange: (settings: ClickToFilterSettings) => void;
|
|
17
|
+
fieldLabels?: DashboardFilterMappingFieldLabels;
|
|
18
|
+
filterInputs: NormalizedFilterDashboardInput[];
|
|
19
|
+
isLoading: boolean;
|
|
20
|
+
onRetry: () => void;
|
|
21
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DashboardDrillHost Component
|
|
3
|
+
*
|
|
4
|
+
* A logic-only observer mounted once at the dashboard root. It owns the two
|
|
5
|
+
* side effects a drill has outside its card:
|
|
6
|
+
*
|
|
7
|
+
* - Drill through. A pending drill-through waits here for its destination to
|
|
8
|
+
* load, then becomes a navigation entry. This is also the one place where
|
|
9
|
+
* dashboard selection follows `navigationTarget`, forward and back.
|
|
10
|
+
* - Drill to insight in a modal. The open request lives in the dashboard
|
|
11
|
+
* store; this renders it.
|
|
12
|
+
*/
|
|
13
|
+
export declare function DashboardDrillHost(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CarriedContextItem } from '../../lib/dashboard-navigation/describe-carried-context.js';
|
|
2
2
|
interface FilterBadgeTooltipProps {
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* What the insight was opened with: the click and any carried filters
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
items?: CarriedContextItem[];
|
|
7
7
|
/**
|
|
8
8
|
* Context mode indicating how filters were passed
|
|
9
9
|
*/
|
|
10
10
|
contextMode?: 'filters' | 'full' | 'none' | 'interactionFilters';
|
|
11
11
|
}
|
|
12
|
-
export declare function FilterBadgeTooltip({ filters, contextMode, }: FilterBadgeTooltipProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
export declare function FilterBadgeTooltip({ items: filters, contextMode, }: FilterBadgeTooltipProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
13
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TFilter, TFilterValue } from '../surfboard/filter/types.js';
|
|
1
|
+
import { TransientInputContext } from '../../lib/dashboard-inputs/transient-input-context.js';
|
|
3
2
|
interface InsightModalProps {
|
|
4
3
|
/**
|
|
5
4
|
* Whether the modal is open
|
|
@@ -14,18 +13,9 @@ interface InsightModalProps {
|
|
|
14
13
|
*/
|
|
15
14
|
insightId: string;
|
|
16
15
|
/**
|
|
17
|
-
*
|
|
18
|
-
* Can be either ClickFilterCondition (interaction filters) or TFilterValue (dashboard filters)
|
|
16
|
+
* The insight request's runtime; absent while no insight is open
|
|
19
17
|
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Filter definitions for looking up titles
|
|
23
|
-
*/
|
|
24
|
-
filterDefinitions?: TFilter[];
|
|
25
|
-
/**
|
|
26
|
-
* How context was passed to the insight
|
|
27
|
-
*/
|
|
28
|
-
contextMode?: 'interactionFilters' | 'full' | 'none';
|
|
18
|
+
runtime?: TransientInputContext;
|
|
29
19
|
/**
|
|
30
20
|
* Title of the insight card (displayed in modal header)
|
|
31
21
|
*/
|
|
@@ -35,5 +25,5 @@ interface InsightModalProps {
|
|
|
35
25
|
*/
|
|
36
26
|
cardDescription?: string;
|
|
37
27
|
}
|
|
38
|
-
export declare function InsightModal({ open, onOpenChange, insightId,
|
|
28
|
+
export declare function InsightModal({ open, onOpenChange, insightId, runtime, cardTitle, cardDescription, }: InsightModalProps): import("react/jsx-runtime").JSX.Element;
|
|
39
29
|
export {};
|
|
@@ -1,28 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
* InsightViewer Component
|
|
3
|
-
*
|
|
4
|
-
* Renders a saved insight/visual by ID.
|
|
5
|
-
* Used in both modal and replace-card display modes.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Fetches visual data by ID
|
|
9
|
-
* - Extracts and renders the card from the frame
|
|
10
|
-
* - Applies context filters based on contextMode
|
|
11
|
-
* - Loading and error states
|
|
12
|
-
*/
|
|
1
|
+
import { TransientInputContext } from '../../lib/dashboard-inputs/transient-input-context.js';
|
|
13
2
|
interface InsightViewerProps {
|
|
14
3
|
/**
|
|
15
4
|
* ID of the insight/visual to display
|
|
16
5
|
*/
|
|
17
6
|
insightId: string;
|
|
18
7
|
/**
|
|
19
|
-
*
|
|
8
|
+
* The insight request's runtime: the click it was opened with, and under
|
|
9
|
+
* `full` what the dashboard itself had received. It is the only carried
|
|
10
|
+
* context the insight's card resolves under, and its context mode decides
|
|
11
|
+
* whether the dashboard's own toolbar filters apply.
|
|
20
12
|
*/
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* How context was passed to the insight
|
|
24
|
-
*/
|
|
25
|
-
contextMode?: 'interactionFilters' | 'full' | 'none';
|
|
13
|
+
runtime: TransientInputContext;
|
|
26
14
|
}
|
|
27
|
-
export declare function InsightViewer({ insightId,
|
|
15
|
+
export declare function InsightViewer({ insightId, runtime }: InsightViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
28
16
|
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a click on a card does, authored in one side sheet: the filter, every
|
|
3
|
+
* drill action, and whether the card listens to the others. Everything edits a
|
|
4
|
+
* local draft that Save writes at once.
|
|
5
|
+
*/
|
|
6
|
+
export declare function InteractionsSheet(): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ClickToFilterDimension } from '../../../lib/dashboard-inputs/click-to-filter-emitted-fields.js';
|
|
2
|
+
import { ClickToFilterMappingDraft } from '../../../lib/dashboard-inputs/click-to-filter-mapping-draft.js';
|
|
3
|
+
import { ClickToFilterSettings, TCard } from '../../../lib/types/common-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Everything about click to filter, one step in from the sheet's list: the
|
|
6
|
+
* switch, what a click carries, which cards it reaches, and multiple
|
|
7
|
+
* selection. It edits a draft; the sheet saves it with everything else.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ClickToFilterPanel({ card, settings, onSettingsChange, dimensions, draft, isLoadingDraft, onReviewCards, isLinked, }: {
|
|
10
|
+
card: Pick<TCard, 'type' | 'title'>;
|
|
11
|
+
settings: ClickToFilterSettings;
|
|
12
|
+
onSettingsChange: (settings: ClickToFilterSettings) => void;
|
|
13
|
+
/** The card's groundable dimension fields, for the chosen-columns checklist. */
|
|
14
|
+
dimensions: ClickToFilterDimension[];
|
|
15
|
+
draft: ClickToFilterMappingDraft | undefined;
|
|
16
|
+
isLoadingDraft: boolean;
|
|
17
|
+
onReviewCards: () => void;
|
|
18
|
+
/** A linked library visual: behavior saves to the library, card targeting to this dashboard. */
|
|
19
|
+
isLinked?: boolean;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -8,7 +8,7 @@ import { TCard } from '../../../lib/types/index.js';
|
|
|
8
8
|
*
|
|
9
9
|
* Features:
|
|
10
10
|
* - Shows interaction label, icon, and target information
|
|
11
|
-
* - Positioned at
|
|
11
|
+
* - Positioned at the supplied click coordinates
|
|
12
12
|
* - Displays selected element context
|
|
13
13
|
* - Handles interaction selection and event application
|
|
14
14
|
*
|
|
@@ -95,7 +95,7 @@ interface InteractionSelectionPopoverProps {
|
|
|
95
95
|
*/
|
|
96
96
|
drillHierarchies?: DrillHierarchy[];
|
|
97
97
|
/**
|
|
98
|
-
* Card ID for
|
|
98
|
+
* Card ID for reading the current drill depth from card view state
|
|
99
99
|
*/
|
|
100
100
|
cardId?: string;
|
|
101
101
|
/**
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DrillHierarchy, Interaction } from '../../../lib/types/interaction-types.js';
|
|
2
|
+
import { Field } from '../../../lib/types/explorer-types.js';
|
|
3
|
+
import { TCard } from '../../../lib/types/common-types.js';
|
|
4
|
+
/** One action, one step in from the list. Edits the sheet's draft in place. */
|
|
5
|
+
export declare function ActionEditor({ interaction, isNew, metrics, attributes, availableFields, card, onUpdateHierarchies, onUpdate, onRemove, onDone, }: {
|
|
6
|
+
interaction: Interaction;
|
|
7
|
+
/** Added in this visit and not yet confirmed with Done. */
|
|
8
|
+
isNew: boolean;
|
|
9
|
+
metrics: Field[];
|
|
10
|
+
attributes: Field[];
|
|
11
|
+
availableFields: Field[];
|
|
12
|
+
card: TCard;
|
|
13
|
+
onUpdateHierarchies: (hierarchies: DrillHierarchy[]) => void;
|
|
14
|
+
onUpdate: (interaction: Interaction) => void;
|
|
15
|
+
onRemove: () => void;
|
|
16
|
+
onDone: () => void;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { DrillThroughInteraction, DrillToDetailInteraction, Interaction, InteractionTrigger } from '../../../lib/types/interaction-types.js';
|
|
2
|
+
import { Field } from '../../../lib/types/explorer-types.js';
|
|
3
|
+
import { TCard } from '../../../lib/types/common-types.js';
|
|
4
|
+
export declare const TABLE_TYPES: ReadonlyArray<TCard['type']>;
|
|
5
|
+
/** What a viewer clicks on this kind of card, with its article: "a row", "a mark". */
|
|
6
|
+
export declare function clickUnit(type: TCard['type']): string;
|
|
7
|
+
/** "Applies to 1 of 2 cards on this sheet". A click reaches its own sheet only. */
|
|
8
|
+
export declare function reachSentence(draft: {
|
|
9
|
+
cards: readonly unknown[];
|
|
10
|
+
counts: {
|
|
11
|
+
covered: number;
|
|
12
|
+
toReview: number;
|
|
13
|
+
};
|
|
14
|
+
}): string;
|
|
15
|
+
/** The actions an author can add. Click to filter is a card setting, not one of these. */
|
|
16
|
+
export type ActionMode = 'drillDown' | 'dynamicDrill' | 'drillThrough' | 'drillToDetail' | 'drillToURL';
|
|
17
|
+
export declare const ACTION_META: Record<ActionMode, {
|
|
18
|
+
name: string;
|
|
19
|
+
line: string;
|
|
20
|
+
term: string;
|
|
21
|
+
group: 'stay' | 'go';
|
|
22
|
+
}>;
|
|
23
|
+
export declare const ACTION_GROUPS: Array<{
|
|
24
|
+
id: 'stay' | 'go';
|
|
25
|
+
title: string;
|
|
26
|
+
}>;
|
|
27
|
+
/** A matrix offers drills from its context menu, which only opens an insight. */
|
|
28
|
+
export declare function allowedActionModes(cardType: TCard['type']): ActionMode[];
|
|
29
|
+
export declare function isActionMode(mode: Interaction['mode']): mode is ActionMode;
|
|
30
|
+
/**
|
|
31
|
+
* The field a new action listens on. A metric carries every dimension of the
|
|
32
|
+
* clicked value, which suits going somewhere; an in-place drill follows one
|
|
33
|
+
* dimension.
|
|
34
|
+
*/
|
|
35
|
+
export declare function defaultTrigger(mode: ActionMode, metrics: Field[], attributes: Field[]): InteractionTrigger | undefined;
|
|
36
|
+
export declare function createAction(mode: ActionMode, id: string, trigger: InteractionTrigger | undefined): Interaction & {
|
|
37
|
+
id: string;
|
|
38
|
+
};
|
|
39
|
+
/** What the author still has to fill in, or undefined when the action can run. */
|
|
40
|
+
export declare function actionGap(interaction: Interaction): string | undefined;
|
|
41
|
+
/** The name a viewer sees in the menu, which is also the row title here. */
|
|
42
|
+
export declare function actionTitle(interaction: Interaction): string;
|
|
43
|
+
/** Drill-through and insight default differently at runtime (`run-one-off-drill.ts`). */
|
|
44
|
+
export declare function effectiveContextMode(interaction: DrillThroughInteraction | DrillToDetailInteraction): 'interactionFilters' | 'full' | 'none';
|
|
45
|
+
export declare function actionSummary(interaction: Interaction, card: Pick<TCard, 'interactionConfig'>): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ActionMode } from './action-meta.js';
|
|
2
|
+
/** Pick what the click should do first; the editor asks for the rest. */
|
|
3
|
+
export declare function ActionPicker({ allowedModes, onPick, onBack, }: {
|
|
4
|
+
allowedModes: ActionMode[];
|
|
5
|
+
onPick: (mode: ActionMode) => void;
|
|
6
|
+
onBack: () => void;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ClickOutcome } from '../../../lib/interactions/click-outcome.js';
|
|
2
|
+
/**
|
|
3
|
+
* The sentence the sheet exists to answer: what does a click on this card do.
|
|
4
|
+
* It reads the draft, so it changes as the author edits.
|
|
5
|
+
*/
|
|
6
|
+
export declare function ClickOutcomePreview({ outcome, clickUnit, }: {
|
|
7
|
+
outcome: ClickOutcome;
|
|
8
|
+
/** "a row", "a mark", … */
|
|
9
|
+
clickUnit: string;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ClickOutcome } from '../../../lib/interactions/click-outcome.js';
|
|
2
|
+
import { ClickToFilterMappingDraft } from '../../../lib/dashboard-inputs/click-to-filter-mapping-draft.js';
|
|
3
|
+
import { Interaction } from '../../../lib/types/interaction-types.js';
|
|
4
|
+
import { TCard } from '../../../lib/types/common-types.js';
|
|
5
|
+
/**
|
|
6
|
+
* The sheet's first view. One question at the top, then the two things an
|
|
7
|
+
* author decides: what a click on this card does, and whether the card listens
|
|
8
|
+
* to clicks on the others.
|
|
9
|
+
*/
|
|
10
|
+
export declare function InteractionsHome({ card, clickUnit, outcome, canFilter, filterEnabled, onFilterEnabledChange, hasFullFilterAuthoring, draft, isLoadingDraft, interactions, canAddAction, onOpenFilter, onOpenAction, onAddAction, respondsToSelections, onRespondsToSelectionsChange, }: {
|
|
11
|
+
card: Pick<TCard, 'interactionConfig'>;
|
|
12
|
+
clickUnit: string;
|
|
13
|
+
outcome: ClickOutcome;
|
|
14
|
+
/** False when the card has no field a click can filter by. */
|
|
15
|
+
canFilter: boolean;
|
|
16
|
+
filterEnabled: boolean;
|
|
17
|
+
onFilterEnabledChange: (enabled: boolean) => void;
|
|
18
|
+
hasFullFilterAuthoring: boolean;
|
|
19
|
+
draft: ClickToFilterMappingDraft | undefined;
|
|
20
|
+
isLoadingDraft: boolean;
|
|
21
|
+
interactions: Interaction[];
|
|
22
|
+
canAddAction: boolean;
|
|
23
|
+
onOpenFilter: () => void;
|
|
24
|
+
onOpenAction: (index: number) => void;
|
|
25
|
+
onAddAction: () => void;
|
|
26
|
+
respondsToSelections: boolean;
|
|
27
|
+
onRespondsToSelectionsChange: (responds: boolean) => void;
|
|
28
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/** Caption above a group (design/TOKENS.md `text-caption`). */
|
|
3
|
+
export declare const SECTION_LABEL_CLASS = "text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";
|
|
4
|
+
/**
|
|
5
|
+
* A box as tall as a row's title line. Icons, switches and chevrons sit in one
|
|
6
|
+
* so they center on the title, not between the title and the hint under it.
|
|
7
|
+
*/
|
|
8
|
+
export declare function TitleLine({ children }: {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const ROW_TITLE_CLASS = "text-[13px] font-medium leading-[18px] text-foreground";
|
|
12
|
+
export declare const ROW_HINT_CLASS = "mt-0.5 text-[12px] leading-[1.45] text-muted-foreground";
|
|
13
|
+
/** One setting with its switch on the right. Every switch in the sheet uses this. */
|
|
14
|
+
export declare function SwitchRow({ title, hint, checked, onCheckedChange, disabled, className, }: {
|
|
15
|
+
title: string;
|
|
16
|
+
hint?: ReactNode;
|
|
17
|
+
checked: boolean;
|
|
18
|
+
onCheckedChange: (checked: boolean) => void;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
className?: string;
|
|
21
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
/** Header of a view one step in: a way back, and where you are. */
|
|
23
|
+
export declare function SubHeader({ title, onBack }: {
|
|
24
|
+
title: string;
|
|
25
|
+
onBack: () => void;
|
|
26
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
/** A short list of exclusive choices, each with a line of explanation. */
|
|
28
|
+
export declare function RadioCards<T extends string>({ label, value, onChange, options, }: {
|
|
29
|
+
label: string;
|
|
30
|
+
value: T;
|
|
31
|
+
onChange: (value: T) => void;
|
|
32
|
+
options: ReadonlyArray<{
|
|
33
|
+
value: T;
|
|
34
|
+
title: string;
|
|
35
|
+
line: string;
|
|
36
|
+
}>;
|
|
37
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,33 @@
|
|
|
1
1
|
import { TDashboard } from '../../../lib/types/common-types.js';
|
|
2
|
-
import { DashboardFilterMappingDraftDecision, DashboardFilterMappingDraftResult } from '../../../lib/dashboard-inputs/dashboard-filter-mapping-authoring.js';
|
|
2
|
+
import { DashboardFilterMappingDraftDecision, DashboardFilterMappingDraftResult, DashboardFilterMappingDraftRow } from '../../../lib/dashboard-inputs/dashboard-filter-mapping-authoring.js';
|
|
3
|
+
import { DashboardFilterTarget } from '../../../shared/dashboard-authoring/index.js';
|
|
3
4
|
import { DashboardFilterMappingFieldLabels } from '../../../lib/dashboard-inputs/dashboard-filter-mapping-candidate-metadata.js';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
/** Searchable candidate menu: search input past the dense threshold, fields
|
|
7
|
+
* grouped by source with counts, "Don't apply this filter" pinned at the
|
|
8
|
+
* bottom. No ranked or suggested section — suggestion happens once, at the
|
|
9
|
+
* binding level; the menu stays a plain list. */
|
|
10
|
+
export declare function CandidateMenuContent({ row, fieldLabels, onPickTarget, onExclude, excludeLabel, }: {
|
|
11
|
+
/** What choosing "don't apply" means on the calling surface. */
|
|
12
|
+
excludeLabel?: string;
|
|
13
|
+
row: DashboardFilterMappingDraftRow;
|
|
14
|
+
fieldLabels?: DashboardFilterMappingFieldLabels;
|
|
15
|
+
onPickTarget: (target: DashboardFilterTarget) => void;
|
|
16
|
+
onExclude: () => void;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function MappingRow({ mode, row, cardTitle, cardMeta, fieldLabels, onDecision, onRetry, excludeLabel, trailing, }: {
|
|
19
|
+
/** Passed to the field menu; defaults to the toolbar filter's wording. */
|
|
20
|
+
excludeLabel?: string;
|
|
21
|
+
/** An extra control after the field picker, such as a one-click Accept. */
|
|
22
|
+
trailing?: React.ReactNode;
|
|
23
|
+
mode: 'popover' | 'table';
|
|
24
|
+
row: DashboardFilterMappingDraftRow;
|
|
25
|
+
cardTitle: string;
|
|
26
|
+
cardMeta?: string;
|
|
27
|
+
fieldLabels?: DashboardFilterMappingFieldLabels;
|
|
28
|
+
onDecision: (decision: DashboardFilterMappingDraftDecision) => void;
|
|
29
|
+
onRetry: () => void;
|
|
30
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
4
31
|
export declare function DashboardFilterMappingPanel({ dashboard, filterTitle, isLoading, draftResult, fieldLabels, onDecision, onRetry, }: {
|
|
5
32
|
dashboard: Pick<TDashboard, 'sheets'>;
|
|
6
33
|
filterTitle?: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SelectionTuple } from '../../../shared/analytics-protocol/selection-contract.js';
|
|
2
|
+
/**
|
|
3
|
+
* One source card's click selection in the filter bar. The chip is the record
|
|
4
|
+
* of the click: it names what was clicked and where, and removes it.
|
|
5
|
+
*/
|
|
6
|
+
export declare function SelectionChip({ tuples, sourceTitle, targetCount, onRemove, }: {
|
|
7
|
+
tuples: SelectionTuple[];
|
|
8
|
+
sourceTitle: string;
|
|
9
|
+
targetCount: number;
|
|
10
|
+
onRemove: () => void;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -36,6 +36,9 @@ export declare function useDashboardFilterMappingPopover(params: {
|
|
|
36
36
|
filters: TFilter[];
|
|
37
37
|
id: string;
|
|
38
38
|
title?: string;
|
|
39
|
+
interactionDefaults?: {
|
|
40
|
+
clickToFilter: "on" | "off";
|
|
41
|
+
};
|
|
39
42
|
aiContext?: import('../../../lib/types/assistant-types.js').DashboardAIContext;
|
|
40
43
|
summary?: {
|
|
41
44
|
enabled?: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
2
2
|
declare const ResizablePanelGroup: ({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
declare const ResizablePanel: import('react').ForwardRefExoticComponent<Omit<import('react').HTMLAttributes<HTMLElement | HTMLObjectElement | HTMLMapElement | HTMLLabelElement | HTMLSourceElement | HTMLInputElement | HTMLTimeElement | HTMLTableElement | HTMLBodyElement | HTMLStyleElement | HTMLTitleElement | HTMLAreaElement | HTMLLinkElement | HTMLProgressElement | HTMLHRElement |
|
|
3
|
+
declare const ResizablePanel: import('react').ForwardRefExoticComponent<Omit<import('react').HTMLAttributes<HTMLElement | HTMLObjectElement | HTMLMapElement | HTMLLabelElement | HTMLSourceElement | HTMLInputElement | HTMLTimeElement | HTMLTableElement | HTMLBodyElement | HTMLStyleElement | HTMLTitleElement | HTMLAreaElement | HTMLOutputElement | HTMLLinkElement | HTMLProgressElement | HTMLHRElement | HTMLAnchorElement | HTMLDataElement | HTMLBaseElement | HTMLCanvasElement | HTMLAudioElement | HTMLQuoteElement | HTMLBRElement | HTMLButtonElement | HTMLTableCaptionElement | HTMLTableColElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDivElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLFormElement | HTMLHeadingElement | HTMLHeadElement | HTMLHtmlElement | HTMLIFrameElement | HTMLImageElement | HTMLLegendElement | HTMLLIElement | HTMLMenuElement | HTMLMetaElement | HTMLMeterElement | HTMLOListElement | HTMLOptGroupElement | HTMLOptionElement | HTMLParagraphElement | HTMLPictureElement | HTMLPreElement | HTMLScriptElement | HTMLSelectElement | HTMLSlotElement | HTMLSpanElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTemplateElement | HTMLTextAreaElement | HTMLTableRowElement | HTMLTrackElement | HTMLUListElement | HTMLVideoElement>, "id" | "onResize"> & {
|
|
4
4
|
className?: string | undefined;
|
|
5
5
|
collapsedSize?: number | undefined;
|
|
6
6
|
collapsible?: boolean | undefined;
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import { MatrixInteractionInput, MatrixInteraction } from '../../../lib/interactions/get-click-context-from-matrix.js';
|
|
2
|
+
export type MatrixSelectionSource = 'rowMembers' | 'columnMembers' | 'cells';
|
|
2
3
|
export type MatrixInteractionHost = Pick<MatrixInteractionInput, 'resolveField' | 'capabilities'> & {
|
|
3
4
|
canDispatch?: (mode: 'clickFilter' | 'drillToDetail', context: NonNullable<MatrixInteraction['context']>) => boolean;
|
|
4
5
|
filter: (context: NonNullable<MatrixInteraction['context']>) => void;
|
|
6
|
+
/**
|
|
7
|
+
* A direct click on a member or a cell. The host decides whether that part
|
|
8
|
+
* of the grid starts a selection and which gesture the pointer asked for.
|
|
9
|
+
*/
|
|
10
|
+
select?: (context: NonNullable<MatrixInteraction['context']>, source: MatrixSelectionSource, event: Pick<React.MouseEvent, 'shiftKey' | 'metaKey' | 'ctrlKey' | 'nativeEvent'>) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Whether this part of the grid is in the card's filter selection, so the
|
|
13
|
+
* viewer can mark it. Absent when the card has nothing selected, which lets
|
|
14
|
+
* the viewer skip the question for every member and cell.
|
|
15
|
+
*/
|
|
16
|
+
isSelected?: (context: NonNullable<MatrixInteraction['context']>) => boolean;
|
|
5
17
|
drill: (context: NonNullable<MatrixInteraction['context']>, measure: NonNullable<MatrixInteraction['measure']>) => void;
|
|
6
18
|
};
|
|
7
|
-
/** The host adapts
|
|
19
|
+
/** The host adapts Matrix gestures to selection and drill callbacks; it owns no query or permission policy. */
|
|
8
20
|
export declare function MatrixInteractionActions({ input, host, menu, }: {
|
|
9
21
|
input: Omit<MatrixInteractionInput, 'resolveField' | 'capabilities'>;
|
|
10
22
|
host?: MatrixInteractionHost;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { MatrixInteractionInput } from '../../../lib/interactions/get-click-context-from-matrix.js';
|
|
2
|
+
import { MatrixInteractionHost, MatrixSelectionSource } from './matrix-interaction-actions.js';
|
|
3
|
+
/** Turns a direct click into the host's selection gesture when the clicked paths can filter. */
|
|
4
|
+
export declare function selectFromMatrixClick(host: MatrixInteractionHost | undefined, input: Omit<MatrixInteractionInput, 'resolveField' | 'capabilities'>, source: MatrixSelectionSource, event: Parameters<NonNullable<MatrixInteractionHost['select']>>[2]): void;
|
|
5
|
+
/** Whether this member or cell is in the card's filter selection. */
|
|
6
|
+
export declare function isMatrixClickSelected(host: MatrixInteractionHost | undefined, input: Omit<MatrixInteractionInput, 'resolveField' | 'capabilities'>): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SemaphorAnalyticsIntent, SemaphorFieldRef, SemaphorInputBinding, SemaphorInputOperator, SemaphorMatrixIntent, SemaphorMetricIntent, SemaphorRecordsIntent, SemaphorSqlIntent } from '../shared/analytics-protocol/index.js';
|
|
2
|
-
import { SemaphorInputOptionsQuerySpec, SemaphorInputReference, SemaphorActiveInput, SemaphorInputSpec, SemaphorInputValue, SemaphorAnalysisQueryOptions, SemaphorAnalysisQuerySpec, SemaphorControlRole, SemaphorMatrixQuerySpec, SemaphorMetricQuerySpec, SemaphorOptionValue, SemaphorRecordsQuerySpec, SemaphorSqlQuerySpec } from './contracts.js';
|
|
1
|
+
import { AnalyticsSelection, SemaphorAnalyticsIntent, SemaphorFieldRef, SemaphorInputBinding, SemaphorInputOperator, SemaphorMatrixIntent, SemaphorMetricIntent, SemaphorRecordsIntent, SemaphorSqlIntent } from '../shared/analytics-protocol/index.js';
|
|
2
|
+
import { SemaphorInputOptionsQuerySpec, SemaphorInputReference, SemaphorActiveInput, SemaphorInputSpec, SemaphorInputValue, SemaphorAnalysisQueryOptions, SemaphorAnalysisQuerySpec, SemaphorControlRole, SemaphorMatrixQuerySpec, SemaphorMetricQuerySpec, SemaphorOptionValue, SemaphorRecordsQuerySpec, SemaphorSelectionReference, SemaphorSqlQuerySpec } from './contracts.js';
|
|
3
3
|
export declare function toSemaphorMetricIntent(spec: SemaphorMetricQuerySpec): SemaphorMetricIntent;
|
|
4
4
|
export declare function toSemaphorAnalysisIntent(spec: SemaphorAnalysisQuerySpec): SemaphorMetricIntent;
|
|
5
5
|
export declare function toSemaphorAnalysisQueryOptions(spec: SemaphorAnalysisQuerySpec): SemaphorAnalysisQueryOptions;
|
|
@@ -13,6 +13,7 @@ export declare function toSemaphorInputBinding(input: SemaphorInputReference): S
|
|
|
13
13
|
export declare function toSemaphorInputBindings(inputs: SemaphorInputReference[] | undefined): SemaphorInputBinding[] | undefined;
|
|
14
14
|
export declare function toSemaphorInputSnapshots(inputs: SemaphorInputReference[] | undefined): SemaphorActiveInput[];
|
|
15
15
|
export declare function toSemaphorActiveInputSnapshots(inputs: SemaphorInputReference[] | undefined): SemaphorActiveInput[];
|
|
16
|
+
export declare function toSemaphorSelectionSnapshots(selections: SemaphorSelectionReference[] | undefined): AnalyticsSelection[];
|
|
16
17
|
export declare function toSemaphorInputSpec<TValue extends SemaphorInputValue = SemaphorInputValue>(spec: SemaphorInputSpec<TValue>): SemaphorInputBinding & {
|
|
17
18
|
kind: SemaphorInputSpec['kind'];
|
|
18
19
|
label?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SemaphorAnalysisQueryDefinition, SemaphorAnalysisQuerySpec, SemaphorControlInputSpec, SemaphorControlRole, SemaphorDataAppDefinition, SemaphorDerivedFieldDefinition, SemaphorFilterInputSpec, SemaphorInputOptionsQueryDefinition, SemaphorInputOptionsQuerySpec, SemaphorInputBinding, SemaphorInputBindingReference, SemaphorInputReference, SemaphorInputSpec, SemaphorInputValue, SemaphorMatrixQueryDefinition, SemaphorMatrixQuerySpec, SemaphorMetricQueryDefinition, SemaphorMetricQuerySpec, SemaphorRecordsQueryDefinition, SemaphorRecordsQuerySpec, SemaphorSqlParameterValue, SemaphorSqlQueryDefinition, SemaphorSqlQuerySpec } from './contracts.js';
|
|
1
|
+
import { SemaphorAnalysisQueryDefinition, SemaphorAnalysisQuerySpec, SemaphorControlInputSpec, SemaphorControlRole, SemaphorDataAppDefinition, SemaphorDerivedFieldDefinition, SemaphorFilterInputSpec, SemaphorInputOptionsQueryDefinition, SemaphorInputOptionsQuerySpec, SemaphorInputBinding, SemaphorInputBindingReference, SemaphorInputReference, SemaphorInputSpec, SemaphorInputValue, SemaphorMatrixQueryDefinition, SemaphorMatrixQuerySpec, SemaphorMetricQueryDefinition, SemaphorMetricQuerySpec, SemaphorRecordsQueryDefinition, SemaphorRecordsQuerySpec, SemaphorSelectionInputSpec, SemaphorSqlParameterValue, SemaphorSqlQueryDefinition, SemaphorSqlQuerySpec } from './contracts.js';
|
|
2
2
|
import { SemaphorFieldRef, SemaphorSemanticSourceRef, SemaphorSourceRef } from '../shared/analytics-protocol/index.js';
|
|
3
3
|
export type SemaphorSqlParamInputSpec<TValue extends SemaphorInputValue = SemaphorInputValue> = Omit<SemaphorControlInputSpec<TValue>, 'kind' | 'role'> & {
|
|
4
4
|
defaultValue?: TValue;
|
|
@@ -46,6 +46,7 @@ export declare const semaphor: {
|
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
48
|
filter<TValue extends SemaphorInputValue = SemaphorInputValue>(spec: Omit<SemaphorFilterInputSpec<TValue>, "kind">): SemaphorFilterInputSpec<TValue>;
|
|
49
|
+
selection(spec: Omit<SemaphorSelectionInputSpec, "kind">): SemaphorSelectionInputSpec;
|
|
49
50
|
bindInput(input: SemaphorInputReference, binding: SemaphorBindInputSpec): SemaphorInputBindingReference;
|
|
50
51
|
control<TValue extends SemaphorInputValue = SemaphorInputValue>(spec: SemaphorControlBuilderSpec<TValue>): SemaphorControlInputSpec<TValue>;
|
|
51
52
|
sqlParam<TValue extends SemaphorSqlParameterValue = SemaphorSqlParameterValue>(spec: SemaphorSqlParamInputSpec<TValue>): SemaphorControlInputSpec<TValue>;
|