react-semaphor 0.1.507 → 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("react"),An=require("react-dom/client"),k=require("../chunks/index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("react"),An=require("react-dom/client"),k=require("../chunks/index-BaIrLSBb.cjs"),w=require("../chunks/switch-iC1x2dcE.cjs"),Ze=require("../data-app-builder-browser-runtime/index.cjs"),te=require("../chunks/x-B6ghREd2.cjs"),Cn=require("../chunks/save-3dYRmehL.cjs"),Rn=require("../chunks/mouse-pointer-2-DX4A_XZw.cjs"),tt=require("../chunks/selection-reducer-CGKKsaPa.cjs");function Tr(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const d=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(s,a,d.get?d:{enumerable:!0,get:()=>t[a]})}}return s.default=t,Object.freeze(s)}const Bn=Tr(p),Dn=Tr(An);/**
|
|
2
2
|
* @license lucide-react v0.453.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -2,13 +2,13 @@ import { jsx as r, jsxs as c, Fragment as re } from "react/jsx-runtime";
|
|
|
2
2
|
import * as Zn from "react";
|
|
3
3
|
import { useContext as qn, useState as x, useRef as oe, useMemo as je, useEffect as W, useCallback as Ot } from "react";
|
|
4
4
|
import * as Xn from "react-dom/client";
|
|
5
|
-
import { aK as ea, aL as ta, aM as Ir, aN as jr, aO as zr, aP as ra, aQ as Wr, aR as Hr, aS as Jr, aT as Vr, aU as _r, aV as Ur, aW as Kr, aX as na, aY as aa, aZ as oa, a_ as Ht, a$ as on, R as Gr, b0 as sa, b1 as Vt, b2 as sn, b3 as ia, b4 as la } from "../chunks/index-
|
|
6
|
-
import { B as H, P as it, a as lt, b as dt, _ as da, $ as ca, a0 as ua, a1 as pa, a2 as ha, L as me, R as ma, d as _t } from "../chunks/switch-
|
|
5
|
+
import { aK as ea, aL as ta, aM as Ir, aN as jr, aO as zr, aP as ra, aQ as Wr, aR as Hr, aS as Jr, aT as Vr, aU as _r, aV as Ur, aW as Kr, aX as na, aY as aa, aZ as oa, a_ as Ht, a$ as on, R as Gr, b0 as sa, b1 as Vt, b2 as sn, b3 as ia, b4 as la } from "../chunks/index-ByiS9sB4.js";
|
|
6
|
+
import { B as H, P as it, a as lt, b as dt, _ as da, $ as ca, a0 as ua, a1 as pa, a2 as ha, L as me, R as ma, d as _t } from "../chunks/switch-CD4uGTZI.js";
|
|
7
7
|
import { loadSemaphorBrowserRuntime as ot } from "../data-app-builder-browser-runtime/index.js";
|
|
8
8
|
import { c as Ve, X as He } from "../chunks/x-CXDkqdur.js";
|
|
9
9
|
import { S as fa } from "../chunks/save-DgMfP0j8.js";
|
|
10
10
|
import { M as ga } from "../chunks/mouse-pointer-2-BZvGk45-.js";
|
|
11
|
-
import { C as Ut, S as ba } from "../chunks/
|
|
11
|
+
import { C as Ut, S as ba } from "../chunks/selection-reducer-B94WgZ9V.js";
|
|
12
12
|
/**
|
|
13
13
|
* @license lucide-react v0.453.0 - ISC
|
|
14
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../chunks/matrix-operation-contract-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../chunks/matrix-operation-contract-DoiWTUbT.cjs"),e=require("../chunks/update-policy-COjFudhl.cjs");exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=a.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION=a.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.isSemaphorDataAppCodegenSummary=a.isSemaphorDataAppCodegenSummary;exports.validateSemaphorDataAppCodegenSummary=a.validateSemaphorDataAppCodegenSummary;exports.CODEGEN_SUMMARY_SCHEMA_VERSION=e.CODEGEN_SUMMARY_SCHEMA_VERSION;exports.CODEGEN_SUMMARY_VALIDATOR_VERSION=e.CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.CONTRACT_MANIFEST_SCHEMA_VERSION=e.CONTRACT_MANIFEST_SCHEMA_VERSION;exports.GENERATED_CONTRACT_SCHEMA_VERSION=e.GENERATED_CONTRACT_SCHEMA_VERSION;exports.GENERATED_CONTRACT_TYPESCRIPT_FILES=e.GENERATED_CONTRACT_TYPESCRIPT_FILES;exports.REQUIRED_GENERATED_CONTRACT_FILES=e.REQUIRED_GENERATED_CONTRACT_FILES;exports.assertValidCodegenSummary=e.assertValidCodegenSummary;exports.buildSemaphorGeneratedActiveInput=e.buildSemaphorGeneratedActiveInput;exports.buildSemaphorGeneratedInputOptionIntent=e.buildSemaphorGeneratedInputOptionIntent;exports.buildSemaphorGeneratedViewExecutionRequest=e.buildSemaphorGeneratedViewExecutionRequest;exports.buildSemaphorGeneratedViewExecutionRequests=e.buildSemaphorGeneratedViewExecutionRequests;exports.evaluateSemaphorDataAppContractUpdatePolicy=e.evaluateSemaphorDataAppContractUpdatePolicy;exports.validateCodegenSummary=e.validateCodegenSummary;exports.validateSemaphorGeneratedContract=e.validateSemaphorGeneratedContract;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as E, a as S, i as A, v as t } from "../chunks/matrix-operation-contract-
|
|
2
|
-
import { C as R, a as r, b as s, G as C, e as o, R as p, c as d, f as O, g as i, h as m, i as n, j as N, v as T, d as I } from "../chunks/update-policy-
|
|
1
|
+
import { S as E, a as S, i as A, v as t } from "../chunks/matrix-operation-contract-xL8IhFzp.js";
|
|
2
|
+
import { C as R, a as r, b as s, G as C, e as o, R as p, c as d, f as O, g as i, h as m, i as n, j as N, v as T, d as I } from "../chunks/update-policy-D9q1Tz8k.js";
|
|
3
3
|
export {
|
|
4
4
|
R as CODEGEN_SUMMARY_SCHEMA_VERSION,
|
|
5
5
|
r as CODEGEN_SUMMARY_VALIDATOR_VERSION,
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Y=require("../chunks/matrix-operation-contract-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Y=require("../chunks/matrix-operation-contract-DoiWTUbT.cjs"),C=require("../chunks/update-policy-COjFudhl.cjs"),he=require("node:crypto"),Ce="src/semaphor/generated",H=`// Generated by Semaphor Agent Plugin. Do not hand-edit analytics wiring here.
|
|
2
2
|
// Regenerate from the accepted semaphor_plan_data_app codegenSummary when the plan changes.
|
|
3
|
-
`;function Oe(e,n={}){
|
|
4
|
-
`};return{schemaVersion:
|
|
3
|
+
`;function Oe(e,n={}){C.assertValidCodegenSummary(e);const r=Me(e);if(r.views.length===0&&!n.allowEmpty)throw new Error("Contract generation produced zero executable views. Stop and ask for a different domain/goal or semantic model improvement; pass --allow-empty only for an explicit model-gap report.");const t=ke(r),o=Ne({contract:r,files:t,generatorName:n.generatorName||"react-semaphor/data-app-codegen/node",generatorVersion:n.generatorVersion||"unknown"}),a={...t,"contract.manifest.json":`${JSON.stringify(o,null,2)}
|
|
4
|
+
`};return{schemaVersion:C.GENERATED_CONTRACT_SCHEMA_VERSION,files:a,manifest:o,contentHash:String(o.generatedContentHash||""),usageExample:Te(r),warnings:r.warnings,stats:{inputCount:r.inputs.length,executableViewCount:r.views.length,presentationViewCount:r.presentationViews.length,queryCount:r.views.length,optionQueryCount:r.optionQueries.length}}}function Me(e){var d,l,m,i,c,h,y,V,w,O,R,k;const n=[],r=[];for(const s of e.inputs){g(r,s.fieldRef);for(const I of s.bindings||[])g(r,I.fieldRef);g(r,(d=s.optionQuery)==null?void 0:d.valueFieldRef),g(r,(l=s.optionQuery)==null?void 0:l.labelFieldRef),g(r,(m=s.optionQuery)==null?void 0:m.filterFieldRef),D(r,(i=s.optionQuery)==null?void 0:i.spec)}for(const s of e.filterContracts){g(r,s.fieldRef),g(r,(c=s.optionQuery)==null?void 0:c.valueFieldRef),g(r,(h=s.optionQuery)==null?void 0:h.labelFieldRef),g(r,(y=s.optionQuery)==null?void 0:y.filterFieldRef),D(r,(V=s.optionQuery)==null?void 0:V.spec);for(const I of s.bindings||[])g(r,I.fieldRef)}for(const s of e.views){for(const I of s.fields||[])g(r,I);D(r,(w=s.sdkSpec)==null?void 0:w.spec),D(r,s.visualSpec)}const t=e.implementationChecklist||{};for(const s of Object.values(t.bindingsByView||{}))for(const I of Array.isArray(s)?s:[])g(r,I.fieldRef),g(r,I.optionValueField),g(r,I.optionLabelField);for(const s of t.requiredInputOptions||[])g(r,s.visibleLabelField),g(r,s.optionValueField),g(r,s.runtimeFilterField);const o=pn([...e.sources.map(s=>({raw:s,key:Ie(s),aliases:Ve(s),name:""})),...r.map(s=>an(s)).filter(x)]);B(o,s=>{const I=b(s.raw);return q(s.raw.label||(I==null?void 0:I.datasetName)||(I==null?void 0:I.datasetId)||(I==null?void 0:I.name)||s.raw.kind||"source")});const a=ln(o),u=ne(r.filter(s=>s.name).map(s=>({raw:s,key:X(s),name:""})),s=>s.key);B(u,s=>q([s.raw.sourceKey?yn(s.raw.sourceKey):"",s.raw.aggregate?s.raw.aggregate.toLowerCase():"",s.raw.name].filter(Boolean).join("_")));const p=new Map(u.map(s=>[s.key,s.name])),S=e.inputs.map(s=>({raw:s,name:q(s.id||s.label||"input")}));B(S,s=>s.name);const f=S.filter(s=>!!s.raw.optionQuery).map(s=>({input:s,name:`${s.name}Options`,raw:s.raw.optionQuery}));B(f,s=>s.name);for(const s of f)un(s.raw.labelFieldRef,s.raw.valueFieldRef)&&dn(s.raw.valueFieldRef)&&n.push(`Input option query ${((O=s.raw.spec)==null?void 0:O.inputId)||s.input.raw.id||s.name} uses identifier field ${s.raw.valueFieldRef.name} as both label and value. It can execute, but the UI will show key values unless the semantic model exposes a human-readable label through a modeled relationship.`);const $=e.views.filter(s=>{var I,K;return!!((I=s.sdkSpec)!=null&&I.builder&&((K=s.sdkSpec)!=null&&K.spec))}).map(s=>({raw:s,name:q(s.id||s.title||"query")}));B($,s=>s.name);const F=e.views.filter(s=>fe(s)&&!("sdkSpec"in s)).map(s=>sn(s));for(const s of e.views)(!("sdkSpec"in s)||!((R=s.sdkSpec)!=null&&R.builder)||!((k=s.sdkSpec)!=null&&k.spec))&&!fe(s)&&n.push(`Skipped view ${s.id||s.title||"unknown"} because it has no sdkSpec.`);return Ee({inputs:S,views:$,filterContracts:e.filterContracts}),{summary:e,title:e.title||"Semaphor Data App",sources:o,fields:u,inputs:S,optionQueries:f,views:$,presentationViews:F,filterContracts:e.filterContracts,checklist:t,sourceNameByKey:a,fieldNameByKey:p,warnings:n}}function Ee({inputs:e,views:n,filterContracts:r}){const t=new Set(e.map(a=>a.raw.id).filter(Boolean)),o=new Set(n.map(a=>a.raw.id).filter(Boolean));for(const[a,u]of r.entries()){if(!t.has(u.inputId))throw new Error(`filterContracts.${a}.inputId must reference a generated input.`);const p=new Set(u.appliesToViewIds||[]),S=new Set(u.notAppliedToViewIds||[]);for(const[f,$]of(u.appliesToViewIds||[]).entries())if(!o.has($))throw new Error(`filterContracts.${a}.appliesToViewIds.${f} must reference an executable generated view.`);for(const[f,$]of(u.notAppliedToViewIds||[]).entries())if(!o.has($))throw new Error(`filterContracts.${a}.notAppliedToViewIds.${f} must reference an executable generated view.`);for(const[f,$]of(u.bindings||[]).entries()){if(!o.has($.viewId))throw new Error(`filterContracts.${a}.bindings.${f}.viewId must reference an executable generated view.`);if(!p.has($.viewId))throw new Error(`filterContracts.${a}.bindings.${f}.viewId must be included in appliesToViewIds.`);if(S.has($.viewId))throw new Error(`filterContracts.${a}.bindings.${f}.viewId must not be listed in notAppliedToViewIds.`)}}}function ke(e){return{"sources.ts":ve(e),"fields.ts":je(e),"inputs.ts":De(e),"queries.ts":Be(e),"bindings.ts":Le(e),"accessors.ts":Ye(e),"metadata.ts":We(e),"index.ts":Xe(),"USAGE.md":Ae(e)}}function Ne({contract:e,files:n,generatorName:r,generatorVersion:t}){return{schemaVersion:C.CONTRACT_MANIFEST_SCHEMA_VERSION,generatedContractSchemaVersion:C.GENERATED_CONTRACT_SCHEMA_VERSION,generator:{name:r,version:t},generatedContentHash:Ge(n),codegenSummaryValidatorVersion:C.CODEGEN_SUMMARY_VALIDATOR_VERSION,codegenSummaryHash:xe(e.summary),codegenSummary:e.summary}}function Ge(e){const n=he.createHash("sha256");for(const r of Object.keys(e).filter(t=>t.endsWith(".ts")).sort())n.update(r),n.update("\0"),n.update(e[r]),n.update("\0");return`sha256:${n.digest("hex")}`}function Ae(e){const n=["# Semaphor Generated Data App Contract","","Generated files in this directory are governed Semaphor analytics wiring. Do not hand-edit them.","","Use the app-facing exports from `index.ts`:","","- `queries`: generated governed query factories.","- `queryOptionsForView`: scalar-input and explicit selection wiring for each generated view.","- `rowsForView`: table/records row readers.","- `rowValuesForView`: friendly row object readers for chart/table views.","- `metricValuesForView`: friendly metric-value readers.","- `kpiPropsForView`: KPI component props derived from runtime metric results.","- `roleValuesForView`: canonical dimension/measure/date/id role readers.","- `appInputSpecs`: generated input/filter specs.","- `inputOptionQueries`: option-list query factories for generated inputs.","- `semaphorGeneratedContractMetadata`: generated view/input metadata and presentation-only views.","","Start with these exports before opening large generated internals such as `metadata.ts`.","","For click-to-filter behavior, create one `semaphor.selection({ id, fields })` per source chart, call `useSemaphorSelection`, render its tuples as removable chips in app code, and pass the target view's selection handles as the second argument to `queryOptionsForView.<view>(inputHandles, selections)`. Do not mix selection handles into `appInputSpecs` or scalar input arrays.",""];return e.views.length>0&&(n.push("Generated executable views:"),e.views.forEach(r=>{n.push(`- \`${r.raw.id}\`: ${r.raw.title||r.name}`)}),n.push("")),e.inputs.length>0&&(n.push("Generated inputs:"),e.inputs.forEach(r=>{n.push(`- \`${r.raw.id}\`: ${r.raw.label||r.name}`)}),n.push("")),`${n.join(`
|
|
5
5
|
`)}
|
|
6
6
|
`}function xe(e){return`sha256:${he.createHash("sha256").update(ue(e)).digest("hex")}`}function ue(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(t=>ue(t)).join(",")}]`;const n=e;return`{${Object.keys(n).sort().filter(t=>n[t]!==void 0).map(t=>`${JSON.stringify(t)}:${ue(n[t])}`).join(",")}}`}function Te(e){const n=e.views.find(f=>T(f)&&_(f));if(n)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, recordsSortOptionsForView, rowsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const sortOption = recordsSortOptionsForView.${n.name}[0];`,'const sort = sortOption ? { key: sortOption.key, direction: "asc" as const } : undefined;',`const query = queries.${n.name}({ page, pageSize, sort });`,`const result = useSemaphorQuery(query, queryOptionsForView.${n.name}(inputHandles));`,`const rows = rowsForView.${n.name}(result);`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
|
|
7
7
|
`);const r=e.views.find(f=>T(f));if(r)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, recordsSortOptionsForView, rowsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const sortOption = recordsSortOptionsForView.${r.name}[0];`,'const sort = sortOption ? { key: sortOption.key, direction: "asc" as const } : undefined;',`const query = queries.${r.name}({ sort });`,`const result = useSemaphorQuery(query, queryOptionsForView.${r.name}(inputHandles));`,`const rows = rowsForView.${r.name}(result);`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
|
|
8
8
|
`);const t=e.views.find(f=>Z(f)&&_(f));if(t)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, rowsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const query = queries.${t.name}({ page, pageSize });`,`const result = useSemaphorQuery(query, queryOptionsForView.${t.name}(inputHandles));`,`const rows = rowsForView.${t.name}(result);`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
|
|
9
9
|
`);const o=e.views.find(f=>pe(f)&&_(f));if(o)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, rowsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const query = queries.${o.name}({ page, pageSize });`,`const result = useSemaphorQuery(query, queryOptionsForView.${o.name}(inputHandles));`,`const rows = rowsForView.${o.name}(result);`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
|
|
10
|
-
`);const a=e.views.find(f=>{var
|
|
10
|
+
`);const a=e.views.find(f=>{var $;return mn(($=f.raw.sdkSpec)==null?void 0:$.builder)});if(a)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, rowsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const result = useSemaphorQuery(queries.${a.name}(), queryOptionsForView.${a.name}(inputHandles));`,`const rows = rowsForView.${a.name}(result);`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
|
|
11
11
|
`);const u=e.views.find(f=>_e(f));if(u)return['import { appInputSpecs, createInputHandleMap, kpiPropsForView, queries, queryOptionsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const result = useSemaphorQuery(queries.${u.name}(), queryOptionsForView.${u.name}(inputHandles));`,`const kpiProps = kpiPropsForView.${u.name}(result);`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
|
|
12
|
-
`);const
|
|
13
|
-
`)}function Z(e){var n;return
|
|
12
|
+
`);const p=e.views[0];return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",p?`const result = useSemaphorQuery(queries.${p.name}(), queryOptionsForView.${p.name}(inputHandles));`:"const result = undefined;","const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
|
|
13
|
+
`)}function Z(e){var n;return j((n=e.raw.sdkSpec)==null?void 0:n.builder)==="records"}function _e(e){var n;return j((n=e.raw.sdkSpec)==null?void 0:n.builder)==="metric"}function T(e){var n,r,t;return Z(e)&&((t=(r=(n=e.raw.visualSpec)==null?void 0:n.tableBehavior)==null?void 0:r.sorting)==null?void 0:t.mode)==="server"}function pe(e){var n;return j((n=e.raw.sdkSpec)==null?void 0:n.builder)==="sql"}function _(e){var n,r,t;return((t=(r=(n=e.raw.visualSpec)==null?void 0:n.tableBehavior)==null?void 0:r.pagination)==null?void 0:t.mode)==="server"}function He(e){return Z(e)&&(_(e)||T(e))||pe(e)&&_(e)}function ve(e){const n=e.sources.map(({name:t,raw:o})=>{const a=qe(o);return` ${t}: ${a},`}).join(`
|
|
14
14
|
`),r=e.sources.some(t=>t.raw.kind==="semantic")?`import { semaphor } from "react-semaphor/data-app-sdk";
|
|
15
15
|
|
|
16
16
|
`:"";return`${H}
|
|
17
17
|
${r}export const sources = {
|
|
18
18
|
${n}
|
|
19
19
|
} as const;
|
|
20
|
-
`}function
|
|
20
|
+
`}function qe(e){if(e.kind==="semantic"){const n={domainId:e.domainId,datasetId:e.datasetId,datasetName:e.datasetName,label:e.label};return`semaphor.source.semantic(${M(A(n))})`}return`${M(A({...e,sourceKey:void 0}))} as const`}function je(e){const n=e.fields.map(({name:t,raw:o})=>{const a=Ke(o,e);return` ${t}: ${a},`}).join(`
|
|
21
21
|
`),r=n.includes("sources.")?`import { sources } from "./sources";
|
|
22
22
|
|
|
23
23
|
`:"";return`${H}
|
|
24
24
|
${r}export const fields = {
|
|
25
25
|
${n}
|
|
26
26
|
} as const;
|
|
27
|
-
`}function Ke(e,n){const r={name:e.name,label:e.label,role:e.role,dataType:e.dataType,aggregate:e.aggregate},t=cn(e),o=t?n.sourceNameByKey.get(t):void 0;if(t&&!o)throw new Error(`Field ${e.name} references source ${t}, but that source is not renderable. Include the source in codegenSummary.sources or provide field.source.`);const a=Object.entries(A(r)).map(([u,
|
|
28
|
-
`),r=e.inputs.map(m=>`filterSpecs.${m.name}`).join(", "),t=e.inputs.map(m=>JSON.stringify(m.raw.id)).join(", "),o=e.optionQueries.map(m=>{const i=m.input.raw,
|
|
29
|
-
`),a=e.optionQueries.map(m=>{const i=
|
|
30
|
-
inputs.push(semaphor.bindInput(${
|
|
27
|
+
`}function Ke(e,n){const r={name:e.name,label:e.label,role:e.role,dataType:e.dataType,aggregate:e.aggregate},t=cn(e),o=t?n.sourceNameByKey.get(t):void 0;if(t&&!o)throw new Error(`Field ${e.name} references source ${t}, but that source is not renderable. Include the source in codegenSummary.sources or provide field.source.`);const a=Object.entries(A(r)).map(([u,p])=>`${JSON.stringify(u)}: ${G(p,n)}`);return o&&a.push(`"source": sources.${o}`),`{ ${a.join(", ")} }`}function De(e){const n=e.inputs.map(m=>{const i=E(m.raw.fieldRef,e),c=[`id: ${JSON.stringify(m.raw.id)}`,`label: ${JSON.stringify(m.raw.label||m.raw.id)}`,`operator: ${JSON.stringify(fn(m.raw))}`];if(i&&c.push(`field: fields.${i}`),m.raw.relationshipHint&&c.push(`relationshipHint: ${M(m.raw.relationshipHint)}`),!i)throw new Error(`Input ${m.raw.id||m.name} is missing a generated field reference.`);return` ${m.name}: semaphor.filter({ ${c.join(", ")} }),`}).join(`
|
|
28
|
+
`),r=e.inputs.map(m=>`filterSpecs.${m.name}`).join(", "),t=e.inputs.map(m=>JSON.stringify(m.raw.id)).join(", "),o=e.optionQueries.map(m=>{const i=m.input.raw,c=m.raw,h=b(c.spec)||{},{id:y,inputId:V,source:w,sourceKey:O,valueField:R,labelField:k,population:s,dependencies:I,limit:K,...re}=h,J=c.sourceKey?{sourceKey:c.sourceKey}:c.source||w||(typeof O=="string"?{sourceKey:O}:void 0),te=$e(J,e),oe=E(c.valueFieldRef,e),se=E(c.labelFieldRef,e),ae=ge(m),ie={...re,id:c.id||h.id||`${i.id}-options`,inputId:i.id,source:J,valueField:c.valueFieldRef,labelField:c.labelFieldRef,population:c.population||s,dependencies:ae,limit:c.limit||K||100};if(!te||!oe||!se)throw new Error(`Input option query ${c.id||`${i.id}-options`} is missing source, valueField, or labelField.`);const Fe=Object.entries(A(ie)).map(([be,Re])=>`${JSON.stringify(be)}: ${G(Re,e)}`);return` ${m.name}: semaphor.inputOptions({ ${Fe.join(", ")} }),`}).join(`
|
|
29
|
+
`),a=e.optionQueries.map(m=>{const i=Pe(e,m),c=i.length>0?"inputHandles":"_inputHandles",h=i.map(y=>{const V=E(y.raw.fieldRef,e);if(!V)throw new Error(`Input option query ${m.raw.id||`${m.input.raw.id}-options`} references input ${y.raw.id} without a generated field reference.`);const w=`inputHandles[${JSON.stringify(y.raw.id)}]`;return` if (${w}) {
|
|
30
|
+
inputs.push(semaphor.bindInput(${w}, { field: fields.${V} }));
|
|
31
31
|
}`}).join(`
|
|
32
|
-
`);return` ${m.name}(${
|
|
32
|
+
`);return` ${m.name}(${c}: SemaphorGeneratedInputHandleMap): SemaphorInputReference[] {
|
|
33
33
|
const inputs: SemaphorInputReference[] = [];
|
|
34
|
-
${
|
|
34
|
+
${h}
|
|
35
35
|
return inputs;
|
|
36
36
|
},`}).join(`
|
|
37
37
|
|
|
@@ -41,11 +41,11 @@ ${g}
|
|
|
41
41
|
};
|
|
42
42
|
},`).join(`
|
|
43
43
|
|
|
44
|
-
`),
|
|
44
|
+
`),p=e.optionQueries.map(m=>` case ${JSON.stringify(m.raw.id||`${m.input.raw.id}-options`)}:
|
|
45
45
|
return queryOptionsForInputOptionQuery.${m.name}(inputHandles);`).join(`
|
|
46
|
-
`),
|
|
46
|
+
`),S=e.inputs.length>0,f=e.optionQueries.length>0,$=f?"inputOptionQueryId":"_inputOptionQueryId",F=f?"inputHandles":"_inputHandles",d=["SemaphorInputHandle",f?"SemaphorInputReference":void 0,"SemaphorQueryRuntimeOptions"].filter(x).join(", "),l=[S||f?'import { semaphor } from "react-semaphor/data-app-sdk";':void 0,`import type { ${d} } from "react-semaphor/data-app-sdk";`,S||f?'import { fields } from "./fields";':void 0,f?'import { sources } from "./sources";':void 0,'import type { SemaphorGeneratedInputId, SemaphorGeneratedInputOptionQueryId } from "./metadata";'].filter(x).join(`
|
|
47
47
|
`);return`${H}
|
|
48
|
-
${
|
|
48
|
+
${l}
|
|
49
49
|
|
|
50
50
|
export const filterSpecs = {
|
|
51
51
|
${n}
|
|
@@ -73,48 +73,48 @@ ${u}
|
|
|
73
73
|
} as const;
|
|
74
74
|
|
|
75
75
|
export function queryOptionsForInputOptionQueryId(
|
|
76
|
-
${
|
|
77
|
-
${
|
|
76
|
+
${$}: SemaphorGeneratedInputOptionQueryId,
|
|
77
|
+
${F}: SemaphorGeneratedInputHandleMap,
|
|
78
78
|
): SemaphorQueryRuntimeOptions {
|
|
79
|
-
switch (${
|
|
80
|
-
${
|
|
79
|
+
switch (${$}) {
|
|
80
|
+
${p}
|
|
81
81
|
}
|
|
82
|
-
throw new Error(\`Unknown generated Semaphor input option query id: \${${
|
|
82
|
+
throw new Error(\`Unknown generated Semaphor input option query id: \${${$}}\`);
|
|
83
83
|
}
|
|
84
|
-
`}function
|
|
85
|
-
recordsSortFieldsForView.${
|
|
84
|
+
`}function Pe(e,n){const r=ge(n);if(!(r!=null&&r.mode)||r.mode==="independent")return[];const t=new Set(r.includeInputIds||[]);return e.inputs.filter(o=>o.raw.id!==n.input.raw.id&&(r.mode==="all_applicable"||t.has(o.raw.id)))}function ge(e){var n;return e.raw.dependencies||((n=e.raw.spec)==null?void 0:n.dependencies)}function Be(e){const n=e.views.map(l=>{var c,h,y,V,w,O;const m=j(l.raw.sdkSpec.builder),i=Qe(l);if(Z(l)&&He(l)){const R=(c=l.raw.visualSpec)==null?void 0:c.tableBehavior,k=b(i.pagination),s=_(l),I=T(l),K=((h=R==null?void 0:R.pagination)==null?void 0:h.pageSize)||L(k==null?void 0:k.pageSize)||L(i.limit)||100,re=I?z(l,e):[],J=I?Ue({view:l,contract:e,sortFields:re,defaultField:(y=R==null?void 0:R.sorting)==null?void 0:y.defaultField}):void 0,te=I?(V=R==null?void 0:R.sorting)==null?void 0:V.defaultDirection:void 0,oe=Je({viewName:l.name,supportsPagination:s,supportsSort:I}),se=I?` const orderBy = resolveRecordsOrderBy(
|
|
85
|
+
recordsSortFieldsForView.${l.name},
|
|
86
86
|
params.sort,
|
|
87
87
|
${G(J,e)},
|
|
88
88
|
${G(te,e)},
|
|
89
89
|
);
|
|
90
|
-
`:"",ae=
|
|
90
|
+
`:"",ae=I?` ...(orderBy ? { orderBy } : {}),
|
|
91
91
|
`:"",ie=s?` pagination: resolveServerTablePagination(params, ${JSON.stringify(K)}),
|
|
92
|
-
`:"";return` ${
|
|
92
|
+
`:"";return` ${l.name}(
|
|
93
93
|
params: ${oe} = {},
|
|
94
94
|
) {
|
|
95
95
|
${se} return semaphor.${m}({
|
|
96
96
|
...${G(i,e)},
|
|
97
97
|
${ae}${ie} });
|
|
98
|
-
},`}if(pe(
|
|
98
|
+
},`}if(pe(l)&&_(l)){const R=(w=l.raw.visualSpec)==null?void 0:w.tableBehavior,k=b(i.pagination),s=((O=R==null?void 0:R.pagination)==null?void 0:O.pageSize)||L(k==null?void 0:k.pageSize)||L(i.limit)||100;return` ${l.name}(
|
|
99
99
|
params: SemaphorGeneratedServerPaginationParams = {},
|
|
100
100
|
) {
|
|
101
101
|
return semaphor.${m}({
|
|
102
102
|
...${G(i,e)},
|
|
103
103
|
pagination: resolveServerTablePagination(params, ${JSON.stringify(s)}),
|
|
104
104
|
});
|
|
105
|
-
},`}return` ${
|
|
106
|
-
`),r=e.views.filter(
|
|
107
|
-
`);return` ${
|
|
105
|
+
},`}return` ${l.name}: () => semaphor.${m}(${G(i,e)}),`}).join(`
|
|
106
|
+
`),r=e.views.filter(l=>T(l)).map(l=>{const i=z(l,e).map(c=>` ${JSON.stringify(c.key)}: fields.${c.fieldName},`).join(`
|
|
107
|
+
`);return` ${l.name}: {
|
|
108
108
|
${i}
|
|
109
109
|
},`}).join(`
|
|
110
|
-
`),t=e.views.filter(
|
|
111
|
-
`);return` ${
|
|
110
|
+
`),t=e.views.filter(l=>T(l)).map(l=>{const i=z(l,e).map(c=>` { key: ${JSON.stringify(c.key)}, label: ${JSON.stringify(c.label)}, field: fields.${c.fieldName} },`).join(`
|
|
111
|
+
`);return` ${l.name}: [
|
|
112
112
|
${i}
|
|
113
113
|
],`}).join(`
|
|
114
|
-
`),o=e.views.some(
|
|
115
|
-
`),
|
|
114
|
+
`),o=e.views.some(l=>T(l)),a=e.views.some(l=>_(l)),u=[n,r,t].join(`
|
|
115
|
+
`),p=[n?'import { semaphor } from "react-semaphor/data-app-sdk";':void 0,o?'import type { SemaphorFieldRef } from "react-semaphor/data-app-sdk";':void 0,u.includes("fields.")?'import { fields } from "./fields";':void 0,u.includes("sources.")?'import { sources } from "./sources";':void 0].filter(x).join(`
|
|
116
116
|
`);return`${H}
|
|
117
|
-
${
|
|
117
|
+
${p}
|
|
118
118
|
${o?`export type SemaphorGeneratedRecordsSortDirection = "asc" | "desc";
|
|
119
119
|
|
|
120
120
|
export type SemaphorGeneratedRecordsSort<TSortKey extends string = string> = {
|
|
@@ -176,29 +176,30 @@ ${a?`function resolveServerTablePagination(
|
|
|
176
176
|
};
|
|
177
177
|
}
|
|
178
178
|
`:""}
|
|
179
|
-
`}function Qe(e){var a,u;const n=
|
|
180
|
-
inputs.push(semaphor.bindInput(${
|
|
179
|
+
`}function Qe(e){var a,u;const n=b((a=e.raw.sdkSpec)==null?void 0:a.spec)||{},{kind:r,id:t,...o}=n;return{...o,id:e.raw.id,label:((u=e.raw.visualSpec)==null?void 0:u.title)||e.raw.title||o.label}}function z(e,n){var a,u;const r=[],t=b((a=e.raw.sdkSpec)==null?void 0:a.spec)||{};for(const p of v(t.fields))g(r,p);g(r,t.dateField),g(r,(u=b(t.orderBy))==null?void 0:u.field);for(const p of e.raw.fields||[])g(r,p);return ne(r.map(p=>{const S=E(p,n);if(!(!p.name||!S))return{key:S,fieldName:S,rawName:p.name,label:p.label||p.name}}).filter(x),p=>p.key)}function Ue({view:e,contract:n,sortFields:r,defaultField:t}){var S,f;const o=new Set(r.map($=>$.key));if(t&&o.has(t))return t;const a=r.filter($=>$.rawName===t);if(a.length===1)return a[0].key;const u=b((S=e.raw.sdkSpec)==null?void 0:S.spec),p=E((f=b(u==null?void 0:u.orderBy))==null?void 0:f.field,n);return p&&o.has(p)?p:void 0}function Je({viewName:e,supportsPagination:n,supportsSort:r}){return n&&r?`SemaphorGeneratedRecordsQueryParams<Extract<keyof typeof recordsSortFieldsForView.${e}, string>>`:r?`SemaphorGeneratedRecordsSortParams<Extract<keyof typeof recordsSortFieldsForView.${e}, string>>`:"SemaphorGeneratedServerPaginationParams"}function Le(e){const n=e.views.map(F=>{const l=ze(e,F.raw.id).map(m=>{const i=m.inputId,c=E(m.fieldRef,e);if(!i||!c)return"";const h=[`field: fields.${c}`];if(m.relationshipHint)h.push(`relationshipHint: ${M(m.relationshipHint)}`);else if(Array.isArray(m.relationshipsUsed)&&m.relationshipsUsed.length>0){const V=m.relationshipsUsed.map(w=>{var O;return(O=b(w))==null?void 0:O.id}).filter(w=>typeof w=="string"&&w.length>0);V.length>0&&h.push(`relationshipHint: ${M({relationshipIds:V})}`)}const y=`inputHandles[${JSON.stringify(i)}]`;return` if (${y}) {
|
|
180
|
+
inputs.push(semaphor.bindInput(${y}, { ${h.join(", ")} }));
|
|
181
181
|
}`}).filter(Boolean).join(`
|
|
182
|
-
`);return{view:
|
|
182
|
+
`);return{view:F,renderedBindings:l}}),r=n.some(F=>F.renderedBindings.length>0),t=n.map(({view:F,renderedBindings:d})=>{const l=d?"inputHandles":"_inputHandles";return` ${F.name}(${l}: SemaphorGeneratedInputHandleMap): SemaphorInputReference[] {
|
|
183
183
|
const inputs: SemaphorInputReference[] = [];
|
|
184
|
-
${
|
|
184
|
+
${d}
|
|
185
185
|
return inputs;
|
|
186
186
|
},`}).join(`
|
|
187
187
|
|
|
188
|
-
`),o=e.views.map(
|
|
188
|
+
`),o=e.views.map(F=>` ${F.name}(inputHandles: SemaphorGeneratedInputHandleMap, selections: SemaphorSelectionReference[] = []): SemaphorQueryRuntimeOptions {
|
|
189
189
|
return {
|
|
190
|
-
inputs: inputsForView.${
|
|
191
|
-
|
|
190
|
+
inputs: inputsForView.${F.name}(inputHandles),
|
|
191
|
+
selections,
|
|
192
|
+
debug: queryDebugForView.${F.name},
|
|
192
193
|
};
|
|
193
194
|
},`).join(`
|
|
194
195
|
|
|
195
|
-
`),a=e.views.map(
|
|
196
|
-
return inputsForView.${
|
|
197
|
-
`),u=e.views.map(
|
|
198
|
-
return queryOptionsForView.${
|
|
199
|
-
`),
|
|
196
|
+
`),a=e.views.map(F=>` case ${JSON.stringify(F.raw.id)}:
|
|
197
|
+
return inputsForView.${F.name}(inputHandles);`).join(`
|
|
198
|
+
`),u=e.views.map(F=>` case ${JSON.stringify(F.raw.id)}:
|
|
199
|
+
return queryOptionsForView.${F.name}(inputHandles, selections);`).join(`
|
|
200
|
+
`),p=e.views.length>0,S=p?"inputHandles":"_inputHandles",f=p?"selections":"_selections",$=[r?'import { semaphor } from "react-semaphor/data-app-sdk";':void 0,'import type { SemaphorInputReference, SemaphorQueryRuntimeOptions, SemaphorSelectionReference } from "react-semaphor/data-app-sdk";',r?'import { fields } from "./fields";':void 0,'import type { SemaphorGeneratedInputHandleMap } from "./inputs";',p?'import { queryDebugForView } from "./metadata";':void 0,'import type { SemaphorGeneratedQueryViewId } from "./metadata";'].filter(x).join(`
|
|
200
201
|
`);return`${H}
|
|
201
|
-
${
|
|
202
|
+
${$}
|
|
202
203
|
|
|
203
204
|
export const inputsForView = {
|
|
204
205
|
${t}
|
|
@@ -210,7 +211,7 @@ ${o}
|
|
|
210
211
|
|
|
211
212
|
export function inputsForViewId(
|
|
212
213
|
viewId: SemaphorGeneratedQueryViewId,
|
|
213
|
-
${
|
|
214
|
+
${S}: SemaphorGeneratedInputHandleMap,
|
|
214
215
|
): SemaphorInputReference[] {
|
|
215
216
|
switch (viewId) {
|
|
216
217
|
${a}
|
|
@@ -220,57 +221,58 @@ ${a}
|
|
|
220
221
|
|
|
221
222
|
export function queryOptionsForViewId(
|
|
222
223
|
viewId: SemaphorGeneratedQueryViewId,
|
|
223
|
-
${
|
|
224
|
+
${S}: SemaphorGeneratedInputHandleMap,
|
|
225
|
+
${f}: SemaphorSelectionReference[] = [],
|
|
224
226
|
): SemaphorQueryRuntimeOptions {
|
|
225
227
|
switch (viewId) {
|
|
226
228
|
${u}
|
|
227
229
|
}
|
|
228
230
|
throw new Error(\`Unknown generated Semaphor view id: \${viewId}\`);
|
|
229
231
|
}
|
|
230
|
-
`}function ze(e,n){return e.filterContracts.flatMap(r=>(r.bindings||[]).filter(t=>t.viewId===n).map(t=>({inputId:r.inputId,fieldRef:t.fieldRef,relationshipHint:t.relationshipHint,relationshipsUsed:t.relationshipsUsed})))}function Ye(e){const n=e.views.map(i=>{const
|
|
232
|
+
`}function ze(e,n){return e.filterContracts.flatMap(r=>(r.bindings||[]).filter(t=>t.viewId===n).map(t=>({inputId:r.inputId,fieldRef:t.fieldRef,relationshipHint:t.relationshipHint,relationshipsUsed:t.relationshipsUsed})))}function Ye(e){const n=e.views.map(i=>{const h=Q(i,e).map(y=>{const V=E(y.raw,e);return V?` ${y.name}: fields.${V},`:""}).filter(Boolean).join(`
|
|
231
233
|
`);return` ${i.name}: {
|
|
232
|
-
${
|
|
234
|
+
${h}
|
|
233
235
|
},`}).join(`
|
|
234
|
-
`),r=e.views.map(i=>{const
|
|
236
|
+
`),r=e.views.map(i=>{const h=P(i,e).map(y=>{const V=E(y.raw,e);return V?` ${y.name}: fields.${V},`:""}).filter(Boolean).join(`
|
|
235
237
|
`);return` ${i.name}: {
|
|
236
|
-
${
|
|
238
|
+
${h}
|
|
237
239
|
},`}).join(`
|
|
238
|
-
`),t=e.views.map(i=>{const
|
|
240
|
+
`),t=e.views.map(i=>{const h=P(i,e).map((y,V)=>` ${y.name}: ${JSON.stringify(en(i,y,V))},`).join(`
|
|
239
241
|
`);return` ${i.name}: {
|
|
240
|
-
${
|
|
242
|
+
${h}
|
|
241
243
|
},`}).join(`
|
|
242
|
-
`),o=e.views.map(i=>{const
|
|
244
|
+
`),o=e.views.map(i=>{const c=P(i,e);if(c.length===0)return` ${i.name}(): Record<keyof typeof metricFieldsForView.${i.name}, unknown> {
|
|
243
245
|
return {};
|
|
244
|
-
},`;const
|
|
246
|
+
},`;const h=c.map(y=>{const w=`readMetricValueByBinding(measures, measureBindings, ${`metricMeasureBindingKeysForView.${i.name}.${y.name}`})`;return` ${y.name}: ${w},`}).join(`
|
|
245
247
|
`);return` ${i.name}(result: SemaphorGeneratedMetricResult): Record<keyof typeof metricFieldsForView.${i.name}, unknown> {
|
|
246
248
|
const measures = result?.measures;
|
|
247
249
|
const measureBindings = result?.measureBindings;
|
|
248
250
|
return {
|
|
249
|
-
${
|
|
251
|
+
${h}
|
|
250
252
|
};
|
|
251
253
|
},`}).join(`
|
|
252
254
|
|
|
253
|
-
`),a=e.views.map(i=>{const
|
|
255
|
+
`),a=e.views.map(i=>{const c=P(i,e);if(c.length===0)return` ${i.name}(): Array<keyof typeof metricFieldsForView.${i.name}> {
|
|
254
256
|
return [];
|
|
255
|
-
},`;const
|
|
257
|
+
},`;const h=c.map((y,V)=>{const w=`metricMeasureBindingKeysForView.${i.name}.${y.name}`,O=V===0?`readMetricValueByBinding(measures, measureBindings, ${w}) === undefined && !hasOwnPrimaryMetricValue(result)`:`readMetricValueByBinding(measures, measureBindings, ${w}) === undefined`;return` ...(missing.has(${w}) || (${O}) ? [${JSON.stringify(y.name)} as keyof typeof metricFieldsForView.${i.name}] : []),`}).join(`
|
|
256
258
|
`);return` ${i.name}(result: SemaphorGeneratedMetricResult): Array<keyof typeof metricFieldsForView.${i.name}> {
|
|
257
259
|
const missing = new Set(result?.missingMeasures || []);
|
|
258
260
|
const measures = result?.measures;
|
|
259
261
|
const measureBindings = result?.measureBindings;
|
|
260
262
|
return [
|
|
261
|
-
${
|
|
263
|
+
${h}
|
|
262
264
|
];
|
|
263
265
|
},`}).join(`
|
|
264
266
|
|
|
265
|
-
`),u=e.views.map(i=>{const
|
|
267
|
+
`),u=e.views.map(i=>{const c=P(i,e);if(c.length===0)return"";const h=c[0],y=c.map(w=>`{ key: ${JSON.stringify(w.name)}, label: ${JSON.stringify(w.raw.label||w.raw.name)} }`).join(", "),V=c.filter(w=>w.name!==h.name).map(w=>` if (missing.includes(${JSON.stringify(w.name)})) delete values.${w.name};`).join(`
|
|
266
268
|
`);return` ${i.name}(result: SemaphorGeneratedMetricResult): SemaphorGeneratedKpiProps {
|
|
267
269
|
const values = mapMetricDisplayValues(metricValuesForView.${i.name}(result));
|
|
268
270
|
const missing = missingMetricMeasuresForView.${i.name}(result).map((key) => String(key));
|
|
269
|
-
const primaryMissing = missing.includes(${JSON.stringify(
|
|
270
|
-
const boundPrimaryValue = values.${
|
|
271
|
+
const primaryMissing = missing.includes(${JSON.stringify(h.name)});
|
|
272
|
+
const boundPrimaryValue = values.${h.name};
|
|
271
273
|
const primaryValue = primaryMissing || boundPrimaryValue === undefined ? result?.primaryValue : boundPrimaryValue;
|
|
272
|
-
if (primaryMissing) values.${
|
|
273
|
-
${
|
|
274
|
+
if (primaryMissing) values.${h.name} = metricDisplayValue(result?.primaryValue);
|
|
275
|
+
${V}
|
|
274
276
|
return {
|
|
275
277
|
result: {
|
|
276
278
|
...(result || {}),
|
|
@@ -279,38 +281,38 @@ ${I}
|
|
|
279
281
|
measures: values,
|
|
280
282
|
},
|
|
281
283
|
title: ${JSON.stringify(i.raw.title||i.raw.id)},
|
|
282
|
-
label: ${JSON.stringify(
|
|
284
|
+
label: ${JSON.stringify(h.raw.label||h.raw.name)},
|
|
283
285
|
value: metricDisplayValue(primaryValue),
|
|
284
|
-
measures: [${
|
|
286
|
+
measures: [${y}],
|
|
285
287
|
missingMeasures: missing,
|
|
286
288
|
showComparison: Boolean(result?.comparisonKind),
|
|
287
289
|
};
|
|
288
290
|
},`}).filter(Boolean).join(`
|
|
289
291
|
|
|
290
|
-
`),
|
|
291
|
-
`),
|
|
292
|
+
`),p=e.views.map(i=>{const c=Ze(i,e);return` ${i.name}: ${M(c)},`}).join(`
|
|
293
|
+
`),S=e.views.map(i=>{const h=Q(i,e).map(y=>` ${y.name}: resolveColumnKey(columns, fieldsForView.${i.name}.${y.name}),`).join(`
|
|
292
294
|
`);return` ${i.name}(columns: SemaphorGeneratedColumns): Record<keyof typeof fieldsForView.${i.name}, string | undefined> {
|
|
293
295
|
return {
|
|
294
|
-
${
|
|
296
|
+
${h}
|
|
295
297
|
};
|
|
296
298
|
},`}).join(`
|
|
297
299
|
|
|
298
|
-
`),f=e.views.map(i=>{const
|
|
300
|
+
`),f=e.views.map(i=>{const h=Q(i,e).map(y=>` ${y.name}: readCell(row, columns, fieldsForView.${i.name}.${y.name}),`).join(`
|
|
299
301
|
`);return` ${i.name}(row: SemaphorGeneratedRow, columns: SemaphorGeneratedColumns): Record<keyof typeof fieldsForView.${i.name}, unknown> {
|
|
300
302
|
return {
|
|
301
|
-
${
|
|
303
|
+
${h}
|
|
302
304
|
};
|
|
303
305
|
},`}).join(`
|
|
304
306
|
|
|
305
|
-
`)
|
|
307
|
+
`),$=e.views.map(i=>` ${i.name}(result: SemaphorGeneratedRecordsResult): Array<Record<keyof typeof fieldsForView.${i.name}, unknown>> {
|
|
306
308
|
return (result?.records || []).map((row) => rowValuesForView.${i.name}(row, result?.columns));
|
|
307
309
|
},`).join(`
|
|
308
310
|
|
|
309
|
-
`),
|
|
311
|
+
`),F=e.views.map(i=>{const c=Q(i,e),h=c.filter(s=>s.raw.role==="dimension"),y=c.filter(s=>s.raw.role==="measure"),V=h[0],w=h[1],O=y[0],R=y[1],k=[V?` primaryDimension: values.${V.name},`:" primaryDimension: undefined,",w?` secondaryDimension: values.${w.name},`:" secondaryDimension: undefined,",O?` primaryMeasure: values.${O.name},`:" primaryMeasure: undefined,",R?` secondaryMeasure: values.${R.name},`:" secondaryMeasure: undefined,"].join(`
|
|
310
312
|
`);return` ${i.name}(row: SemaphorGeneratedRow, columns: SemaphorGeneratedColumns): SemaphorGeneratedRoleValues {
|
|
311
313
|
const values = rowValuesForView.${i.name}(row, columns);
|
|
312
314
|
return {
|
|
313
|
-
${
|
|
315
|
+
${k}
|
|
314
316
|
};
|
|
315
317
|
},`}).join(`
|
|
316
318
|
|
|
@@ -386,11 +388,11 @@ ${t}
|
|
|
386
388
|
} as const;
|
|
387
389
|
|
|
388
390
|
export const tableColumnsForView = {
|
|
389
|
-
${
|
|
391
|
+
${p}
|
|
390
392
|
} as const;
|
|
391
393
|
|
|
392
394
|
export const columnKeysForView = {
|
|
393
|
-
${
|
|
395
|
+
${S}
|
|
394
396
|
} as const;
|
|
395
397
|
|
|
396
398
|
export const rowValuesForView = {
|
|
@@ -398,11 +400,11 @@ ${f}
|
|
|
398
400
|
} as const;
|
|
399
401
|
|
|
400
402
|
export const rowsForView = {
|
|
401
|
-
${
|
|
403
|
+
${$}
|
|
402
404
|
} as const;
|
|
403
405
|
|
|
404
406
|
export const roleValuesForView = {
|
|
405
|
-
${
|
|
407
|
+
${F}
|
|
406
408
|
} as const;
|
|
407
409
|
|
|
408
410
|
export const metricValuesForView = {
|
|
@@ -598,13 +600,13 @@ function sourcesReferToSameDataset(
|
|
|
598
600
|
}
|
|
599
601
|
return false;
|
|
600
602
|
}
|
|
601
|
-
`}function Ze(e,n){const r=Q(e,n),t=new Map((T(e)?z(e,n):[]).map(o=>[o.fieldName,o.key]));return r.map(o=>{const a=
|
|
602
|
-
export const generatedViewIds = ${
|
|
603
|
-
export const generatedQueryViewIds = ${
|
|
604
|
-
export const generatedInputIds = ${
|
|
605
|
-
export const generatedInputOptionQueryIds = ${
|
|
606
|
-
export const generatedViewAuthoring = ${
|
|
607
|
-
export const generatedInputAuthoring = ${
|
|
603
|
+
`}function Ze(e,n){const r=Q(e,n),t=new Map((T(e)?z(e,n):[]).map(o=>[o.fieldName,o.key]));return r.map(o=>{const a=E(o.raw,n),u=a?t.get(a):void 0;return A({key:o.name,label:o.raw.label||o.raw.name,dataType:o.raw.dataType,sortable:!!u,sortKey:u})})}function We(e){const n=e.checklist.filterScopeByInput||[],r=e.checklist.requiredDevtools||{},t=e.summary.views.map(d=>d.id).filter(Boolean),o=e.views.map(d=>d.raw.id).filter(Boolean),a=e.inputs.map(d=>d.raw.id).filter(Boolean),u=e.optionQueries.map(d=>d.raw.id||`${d.input.raw.id}-options`).filter(Boolean),p=Object.fromEntries(o.map(d=>[d,e.filterContracts.filter(l=>Array.isArray(l.appliesToViewIds)&&l.appliesToViewIds.includes(d)).map(l=>l.inputId)])),S=Object.fromEntries(e.views.map(d=>[d.raw.id,{title:d.raw.title,visual:d.raw.visual,visualSpec:d.raw.visualSpec,queryKind:d.raw.queryKind,sdkBuilder:d.raw.sdkBuilder}])),f=Object.fromEntries(e.views.map(d=>{var l;return[d.raw.id,A({viewId:d.raw.id,queryId:d.name,title:d.raw.title,visualType:((l=d.raw.visualSpec)==null?void 0:l.visualType)||d.raw.visual,suggestedComponentName:ye(d.raw.title||d.raw.id||d.name),marker:{attribute:"data-semaphor-view-id",value:d.raw.id}})]})),$=Object.fromEntries(e.inputs.map(d=>{var l;return[d.raw.id,A({inputId:d.raw.id,label:d.raw.label,type:d.raw.type,optionQueryId:((l=d.raw.optionQuery)==null?void 0:l.id)||(d.raw.optionQuery?`${d.raw.id}-options`:void 0),suggestedComponentName:ye(d.raw.label||d.raw.id||d.name),marker:{attribute:"data-semaphor-input-id",value:d.raw.id}})]})),F=Object.fromEntries(e.views.map(d=>{var l,m,i;return[d.name,A({viewId:d.raw.id,viewTitle:((l=d.raw.visualSpec)==null?void 0:l.title)||d.raw.title,visualType:(m=d.raw.visualSpec)==null?void 0:m.visualType,title:((i=d.raw.visualSpec)==null?void 0:i.title)||d.raw.title})]}));return`${H}
|
|
604
|
+
export const generatedViewIds = ${M(t)} as const;
|
|
605
|
+
export const generatedQueryViewIds = ${M(o)} as const;
|
|
606
|
+
export const generatedInputIds = ${M(a)} as const;
|
|
607
|
+
export const generatedInputOptionQueryIds = ${M(u)} as const;
|
|
608
|
+
export const generatedViewAuthoring = ${M(f)} as const;
|
|
609
|
+
export const generatedInputAuthoring = ${M($)} as const;
|
|
608
610
|
|
|
609
611
|
export type SemaphorGeneratedViewId = typeof generatedViewIds[number];
|
|
610
612
|
export type SemaphorGeneratedQueryViewId = typeof generatedQueryViewIds[number];
|
|
@@ -623,8 +625,8 @@ export type SemaphorGeneratedFilterContract = {
|
|
|
623
625
|
readonly [key: string]: unknown;
|
|
624
626
|
};
|
|
625
627
|
|
|
626
|
-
export const generatedInputIdsForView = ${
|
|
627
|
-
export const generatedFilterContracts: readonly SemaphorGeneratedFilterContract[] = ${
|
|
628
|
+
export const generatedInputIdsForView = ${M(p)} as const;
|
|
629
|
+
export const generatedFilterContracts: readonly SemaphorGeneratedFilterContract[] = ${M(e.filterContracts)} as const;
|
|
628
630
|
|
|
629
631
|
export function semaphorViewMarkerProps(viewId: SemaphorGeneratedViewId) {
|
|
630
632
|
return {
|
|
@@ -644,9 +646,9 @@ export function filterContractsForView(viewId: SemaphorGeneratedQueryViewId) {
|
|
|
644
646
|
);
|
|
645
647
|
}
|
|
646
648
|
|
|
647
|
-
export const queryDebugForView = ${
|
|
649
|
+
export const queryDebugForView = ${M(F)} as const;
|
|
648
650
|
|
|
649
|
-
export const semaphorGeneratedContractMetadata = ${
|
|
651
|
+
export const semaphorGeneratedContractMetadata = ${M({schemaVersion:"semaphor-generated-data-app-contract/v1",title:e.title,requiredDevtools:r,filterContracts:e.filterContracts,filterScopeByInput:n,generatedViewIds:t,generatedQueryViewIds:o,generatedInputIds:a,generatedInputOptionQueryIds:u,generatedInputIdsForView:p,generatedViewAuthoring:f,generatedInputAuthoring:$,visualSpecs:S,presentationViews:e.presentationViews})} as const;
|
|
650
652
|
`}function Xe(){return`${H}
|
|
651
653
|
export * from "./sources";
|
|
652
654
|
export * from "./fields";
|
|
@@ -655,4 +657,4 @@ export * from "./queries";
|
|
|
655
657
|
export * from "./bindings";
|
|
656
658
|
export * from "./accessors";
|
|
657
659
|
export * from "./metadata";
|
|
658
|
-
`}function D(e,n){if(!(!n||typeof n!="object")){if(Array.isArray(n)){for(const r of n)D(e,r);return}N(n)&&
|
|
660
|
+
`}function D(e,n){if(!(!n||typeof n!="object")){if(Array.isArray(n)){for(const r of n)D(e,r);return}N(n)&&g(e,W(n));for(const r of Object.values(n))D(e,r)}}function Q(e,n){const r=[];if(on(r,e.raw.sdkSpec),r.length===0)for(const o of e.raw.fields||[])g(r,o);const t=ne(r.filter(o=>o.name&&E(o,n)).map(o=>({raw:o,key:X(o),name:""})),o=>o.key);return Se(t,n,"field"),t}function P(e,n){if(j(e.raw.sdkSpec.builder)!=="metric")return[];const r=b(e.raw.sdkSpec.spec),t=[];g(t,r==null?void 0:r.primaryMeasure);for(const a of v(r==null?void 0:r.measures))g(t,a);const o=ne(t.filter(a=>a.name&&E(a,n)).map(a=>({raw:a,key:X(a),name:""})),a=>a.key);return Se(o,n,"metric"),o}function en(e,n,r){var o;const t=(o=e.raw.metricBindingKeys)==null?void 0:o[r];if(typeof t=="string"&&t.trim())return t;throw new Error(`views.${e.raw.id}.metricBindingKeys must include a binding key for metric field ${n.raw.name}.`)}function Se(e,n,r){const t=new Map,o=new Map;for(const u of e){const p=q(u.raw.name||u.raw.label||r)||r;t.set(u.key,p),o.set(p,(o.get(p)||0)+1)}const a=new Set;for(const u of e){const p=t.get(u.key)||r,S=E(u.raw,n)||p,f=o.get(p)===1?p:S;u.name=nn(f,u.key,a)}}function nn(e,n,r){const t=tn(e)?e:q(e||"field")||"field";if(!r.has(t))return r.add(t),t;const o=rn(n),a=`${t}${o}`;if(!r.has(a))return r.add(a),a;let u=2;for(;r.has(`${a}${u}`);)u+=1;const p=`${a}${u}`;return r.add(p),p}function rn(e){let n=0;for(let r=0;r<e.length;r+=1)n=n*31+e.charCodeAt(r)>>>0;return n.toString(36).slice(0,6).replace(/^[0-9]/,"x$&")}function tn(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function on(e,n){const r=b(n.spec);if(!r)return;const t=j(n.builder);if(t==="records"){for(const o of v(r.fields))g(e,o);return}if(t==="sql"){for(const o of v(r.fields))g(e,o);return}if(t==="analysis"||t==="metric"){g(e,r.primaryMeasure);for(const o of v(r.measures))g(e,o);for(const o of v(r.dimensions))g(e,o);g(e,r.dateField);return}if(t==="matrix"){const o=ce(r.rows),a=ce(r.columns),u=v(r.values);for(const p of o)me(e,p);for(const p of a)me(e,p);for(const p of u){const S=b(p);g(e,S==null?void 0:S.field),g(e,S==null?void 0:S.measure)}}}function ce(e){if(Array.isArray(e))return e;const n=b(e);return Array.isArray(n==null?void 0:n.levels)?n.levels:[]}function me(e,n){var r;if(N(n)){g(e,n);return}g(e,(r=b(n))==null?void 0:r.field)}function fe(e){var n,r,t,o;return((n=e==null?void 0:e.computation)==null?void 0:n.kind)==="presentation_only"||((r=e==null?void 0:e.computation)==null?void 0:r.kind)==="derived"||((t=e==null?void 0:e.computation)==null?void 0:t.kind)==="unsupported"||(e==null?void 0:e.visual)==="text_block"||((o=e==null?void 0:e.visualSpec)==null?void 0:o.visualType)==="text_block"}function sn(e){const n=b(e)||{};return A({id:e.id,title:e.title,purpose:e.purpose,visual:e.visual,visualSpec:e.visualSpec,computation:e.computation,uxExpectations:e.uxExpectations,validation:e.validation,sourceViewIds:n.sourceViewIds,content:n.content,description:n.description})}function g(e,n){N(n)&&e.push(W(n))}function W(e){return{name:e.name,label:e.label,role:e.role,dataType:e.dataType,aggregate:e.aggregate,sourceKey:e.sourceKey||(e.source?le(e.source):void 0),...e.source?{source:e.source}:{}}}function an(e){if(!e.source)return;const n={...e.source,...e.sourceKey?{sourceKey:e.sourceKey}:{}},r=Ie(n);if(r)return{raw:n,key:r,aliases:Ve(n),name:""}}function N(e){const n=b(e);return!!(n&&typeof n.name=="string"&&(typeof n.role=="string"||typeof n.dataType=="string"||typeof n.aggregate=="string"||n.source||n.sourceKey))}function we(e){const n=b(e);return!!(n&&(typeof n.sourceKey=="string"||n.kind==="semantic"||typeof n.datasetName=="string"&&typeof n.domainId=="string"))}function G(e,n){if(e===void 0)return"undefined";if(e===null||typeof e=="number"||typeof e=="boolean"||typeof e=="string")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(o=>G(o,n)).join(", ")}]`;if(N(e)){const o=E(W(e),n);if(o)return`fields.${o}`}if(we(e)){const o=$e(e,n);if(o)return`sources.${o}`}const r=b(e);return r?`{ ${Object.entries(r).filter(([,o])=>o!==void 0).map(([o,a])=>`${JSON.stringify(o)}: ${G(a,n)}`).join(", ")} }`:JSON.stringify(e)}function M(e){return JSON.stringify(e,null,2)}function E(e,n){if(N(e))return n.fieldNameByKey.get(X(W(e)))}function $e(e,n){if(we(e))for(const r of ee(e)){const t=n.sourceNameByKey.get(r);if(t)return t}}function X(e){return[e.sourceKey||"",e.name||"",e.role||"",e.aggregate||""].join("|")}function un(e,n){return!N(e)||!N(n)||e.name!==n.name?!1:de(e).some(r=>de(n).includes(r))}function dn(e){return N(e)&&e.role==="id"}function pn(e){const n=[],r=new Map;for(const t of e){const o=U(t.aliases.length?t.aliases:[t.key]),a=o.map(u=>r.get(u)).find(x);if(a){a.aliases=U([...a.aliases,...o]);continue}t.aliases=o,n.push(t);for(const u of o)r.set(u,t)}return n}function ln(e){const n=new Map;for(const r of e)for(const t of U([r.key,...r.aliases])){const o=n.get(t);if(o&&o!==r.name)throw new Error(`Source identity ${t} resolves to multiple generated sources.`);n.set(t,r.name)}return n}function U(e){return Array.from(new Set(e.filter(Boolean)))}function Ie(e){return ee(e)[0]||le(e)}function ee(e){const n=b(e);if(!n)return[];const r=[];if(typeof n.sourceKey=="string"&&r.push(n.sourceKey),n.kind==="semantic"||n.datasetName){const t=typeof n.domainId=="string"?n.domainId:"";t&&typeof n.datasetId=="string"&&r.push(`semantic:${t}:datasetId:${n.datasetId}`),t&&typeof n.datasetName=="string"&&r.push(`semantic:${t}:datasetName:${n.datasetName}`)}return r.length===0&&r.push(le(e)),U(r)}function Ve(e){return ee(e)}function le(e){const n=b(e);return n?typeof n.sourceKey=="string"?n.sourceKey:JSON.stringify(n):""}function cn(e){return N(e)&&de(e)[0]||""}function de(e){return N(e)?U([...typeof e.sourceKey=="string"?[e.sourceKey]:[],...e.source?ee(e.source):[]]):[]}function j(e){const n=String(e||"").replace(/^semaphor\./,"");if(!["metric","records","analysis","matrix","sql"].includes(n))throw new Error(`Unsupported sdkSpec builder: ${e}`);return n}function mn(e){const n=j(e);return n==="records"||n==="sql"}function fn(e){const n=b(e);return typeof(n==null?void 0:n.operator)=="string"?n.operator:e.type==="date_range"?"between":e.type==="multi_select"||e.type==="select"?"in":"="}function B(e,n){const r=new Map;for(const t of e){const o=n(t)||"item",a=r.get(o)||0;r.set(o,a+1),t.name=a===0?o:`${o}${a+1}`}}function ne(e,n){const r=new Set,t=[];for(const o of e){const a=n(o);!a||r.has(a)||(r.add(a),t.push(o))}return t}function q(e){const n=String(e||"").replace(/[^A-Za-z0-9]+/g," ").trim().split(/\s+/).filter(Boolean);if(n.length===0)return"item";const[r,...t]=n,o=[r.toLowerCase(),...t.map(a=>a.charAt(0).toUpperCase()+a.slice(1).toLowerCase())].join("");return/^[A-Za-z_$]/.test(o)?o:`item${o}`}function ye(e){const n=q(e);return n.charAt(0).toUpperCase()+n.slice(1)}function yn(e){const n=String(e).split(":");return n[n.length-1]||String(e)}function A(e){return Object.fromEntries(Object.entries(e).filter(([,n])=>n!==void 0))}function b(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function v(e){return Array.isArray(e)?e:[]}function L(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function x(e){return e!==void 0}exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=Y.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION=Y.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.isSemaphorDataAppCodegenSummary=Y.isSemaphorDataAppCodegenSummary;exports.validateSemaphorDataAppCodegenSummary=Y.validateSemaphorDataAppCodegenSummary;exports.CODEGEN_SUMMARY_SCHEMA_VERSION=C.CODEGEN_SUMMARY_SCHEMA_VERSION;exports.CODEGEN_SUMMARY_VALIDATOR_VERSION=C.CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.CONTRACT_MANIFEST_SCHEMA_VERSION=C.CONTRACT_MANIFEST_SCHEMA_VERSION;exports.GENERATED_CONTRACT_SCHEMA_VERSION=C.GENERATED_CONTRACT_SCHEMA_VERSION;exports.GENERATED_CONTRACT_TYPESCRIPT_FILES=C.GENERATED_CONTRACT_TYPESCRIPT_FILES;exports.REQUIRED_GENERATED_CONTRACT_FILES=C.REQUIRED_GENERATED_CONTRACT_FILES;exports.assertValidCodegenSummary=C.assertValidCodegenSummary;exports.buildSemaphorGeneratedActiveInput=C.buildSemaphorGeneratedActiveInput;exports.buildSemaphorGeneratedInputOptionIntent=C.buildSemaphorGeneratedInputOptionIntent;exports.buildSemaphorGeneratedViewExecutionRequest=C.buildSemaphorGeneratedViewExecutionRequest;exports.buildSemaphorGeneratedViewExecutionRequests=C.buildSemaphorGeneratedViewExecutionRequests;exports.evaluateSemaphorDataAppContractUpdatePolicy=C.evaluateSemaphorDataAppContractUpdatePolicy;exports.validateCodegenSummary=C.validateCodegenSummary;exports.validateSemaphorGeneratedContract=C.validateSemaphorGeneratedContract;exports.DEFAULT_GENERATED_CONTRACT_OUTPUT_DIR=Ce;exports.generateSemaphorDataAppContract=Oe;
|