react-semaphor 0.1.545 → 0.1.547

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/analytics-protocol/index.js +408 -442
  2. package/dist/assistant-context/index.js +1 -1
  3. package/dist/assistant-protocol/index.js +100 -76
  4. package/dist/brand-studio/index.js +4 -4
  5. package/dist/briefings/index.js +6 -6
  6. package/dist/chunks/{add-to-dashboard-BuAqfA2Y.js → add-to-dashboard-BQRAAnc3.js} +55 -33
  7. package/dist/chunks/{analytics-base-schemas-BFAoRlkU.js → analytics-base-schemas-BKs3flFS.js} +2 -2
  8. package/dist/chunks/applied-constraints-DU-wndZ7.js +47 -0
  9. package/dist/chunks/{assistant-chat-D7sWTypJ.js → assistant-chat-CK84cPAB.js} +2826 -2595
  10. package/dist/chunks/{bookmark-state-CXw7lZ50.js → bookmark-state-Cu-a5ie_.js} +8 -15
  11. package/dist/chunks/comparison-window-caption-C2xF-eWw.js +1433 -0
  12. package/dist/chunks/{context-ClREvqCZ.js → context-BerEBuFR.js} +11 -6
  13. package/dist/chunks/custom-visual-inputs-ChL54gGm.js +295 -0
  14. package/dist/chunks/{dashboard-B1tMju0u.js → dashboard-DCk26-6i.js} +1 -1
  15. package/dist/chunks/{dashboard-briefing-launcher-CePgIu0Z.js → dashboard-briefing-launcher-CQ1eYsGy.js} +1291 -1277
  16. package/dist/chunks/dashboard-controls-BMeZjF7r.js +2307 -0
  17. package/dist/chunks/{dashboard-json-CoYRPqxx.js → dashboard-json-BZqCoanC.js} +5 -5
  18. package/dist/chunks/{document-dashboard-inputs-BesAHZvB.js → document-dashboard-inputs-tYd7ao0o.js} +877 -979
  19. package/dist/chunks/{edit-dashboard-visual-JPtNfJRb.js → edit-dashboard-visual-Bv3MHM_G.js} +2157 -2243
  20. package/dist/chunks/filter-reach-copy-CGWsL_ez.js +3480 -0
  21. package/dist/chunks/{filter-value-text-ff7osJr7.js → filter-value-text-Ddf55Ku1.js} +9 -9
  22. package/dist/chunks/global-date-filter-utils-BhAu8zIM.js +12137 -0
  23. package/dist/chunks/index-CtoK1Lgu.js +586 -0
  24. package/dist/chunks/{index-DRWiuqyd.js → index-DmrLP5Ro.js} +105 -104
  25. package/dist/chunks/list-filter-DsaTbM3J.js +15 -0
  26. package/dist/chunks/matrix-analytical-definition-B9vW-osb.js +717 -0
  27. package/dist/chunks/{matrix-card-DjwWcCo8.js → matrix-card-LiMEipvq.js} +3 -3
  28. package/dist/chunks/{matrix-formatter-DnCyRXJE.js → matrix-formatter-DWEeC0_c.js} +44 -44
  29. package/dist/chunks/{matrix-member-presentation-CQGdVks6.js → matrix-member-presentation-DqzG-UhQ.js} +1 -1
  30. package/dist/chunks/{matrix-operation-contract-8OIO4gob.js → matrix-operation-contract-D6vYkZK4.js} +72 -72
  31. package/dist/chunks/{metric-comparison-DEwi9uc2.js → metric-comparison-zpGw4lD6.js} +2 -2
  32. package/dist/chunks/normalize-dashboard-for-dirty-check-XKgH3GFX.js +119 -0
  33. package/dist/chunks/{pivot-header-presentation-DHcx1XGQ.js → pivot-header-presentation-CQnIDtUv.js} +1 -1
  34. package/dist/chunks/{pivot-result-identity-DJhXXcns.js → pivot-result-identity-C-Q1j1Wb.js} +1 -1
  35. package/dist/chunks/{pivot-result-lifecycle-DM4CyGKs.js → pivot-result-lifecycle-pwq3b7LC.js} +571 -380
  36. package/dist/chunks/{raw-temporal-contract-C51YG48G.js → raw-temporal-contract-WuXA8jBP.js} +1 -1
  37. package/dist/chunks/{raw-temporal-presentation-C3mUgnEx.js → raw-temporal-presentation-DypB7sMX.js} +8 -8
  38. package/dist/chunks/{report-preferences-dialog-DUtuUL_5.js → report-preferences-dialog-DoVyriYC.js} +154 -155
  39. package/dist/chunks/{report-runtime-context-Dq8XyODK.js → report-runtime-context-hWiTCzFV.js} +2 -2
  40. package/dist/chunks/resolve-dashboard-input-context-D0JDUa4h.js +5576 -0
  41. package/dist/chunks/{saved-dashboard-context-LrF_kW0l.js → saved-dashboard-context-BfAH5j4L.js} +34 -34
  42. package/dist/chunks/{selection-reducer-Dj_8xD69.js → selection-reducer-CJzkTZio.js} +15 -15
  43. package/dist/chunks/{semaphor-ready-indicator-BxF96Yhv.js → semaphor-ready-indicator-CRm17oIP.js} +51771 -52574
  44. package/dist/chunks/{shelf-drop-preview-context-CNaM_Gmh.js → shelf-drop-preview-context-vy6P9THz.js} +7 -7
  45. package/dist/chunks/{source-entity-resolution-BYn9giz3.js → source-entity-resolution-BIGRvtbG.js} +13 -13
  46. package/dist/chunks/{switch-uDtPgQlQ.js → switch-CEBOR4n7.js} +3 -3
  47. package/dist/chunks/{table-export-sheet-YzMioA7Y.js → table-export-sheet-4X9mAG3V.js} +1 -1
  48. package/dist/chunks/table-settings-WysCBj62.js +614 -0
  49. package/dist/chunks/{temporal-bucket-D7NBrrtL.js → temporal-bucket-CQOSbv9-.js} +26 -26
  50. package/dist/chunks/{token-types-DBbZVQsm.js → token-types-BMqRmT-C.js} +1 -1
  51. package/dist/chunks/{use-create-flow-overlay-state-CjB7ig1o.js → use-create-flow-overlay-state-Csx_Xjsh.js} +101 -101
  52. package/dist/chunks/{validators-DMHTpf7a.js → validators-C-aOQlTB.js} +713 -658
  53. package/dist/chunks/{relative-date-label-Bk2j94pA.js → zoned-wall-clock-MulfA26h.js} +64 -21
  54. package/dist/dashboard/index.js +2 -2
  55. package/dist/dashboard-authoring/index.js +1895 -1163
  56. package/dist/data-app-sdk/index.js +6 -6
  57. package/dist/data-app-sdk-adapters/index.js +3 -3
  58. package/dist/data-app-sdk-validation/index.js +14 -14
  59. package/dist/format-utils/index.js +133 -133
  60. package/dist/index.js +192 -186
  61. package/dist/layouts/index.js +5 -242
  62. package/dist/report-runtime-context/index.js +2 -2
  63. package/dist/shared/index.js +4 -5
  64. package/dist/style.css +1 -1
  65. package/dist/surfboard/index.js +2 -2
  66. package/dist/types/components/index.d.ts +2 -0
  67. package/dist/types/components/surfboard/arrange-layout-button.d.ts +8 -0
  68. package/dist/types/components/surfboard/filter/types.d.ts +7 -0
  69. package/dist/types/components/surfboard/screen-size-preview-button.d.ts +10 -0
  70. package/dist/types/components/visual/matrix-table/matrix-card-view.d.ts +3 -0
  71. package/dist/types/index.js +6 -6
  72. package/dist/types/lib/charts/table-chart-types.d.ts +4 -0
  73. package/dist/types/lib/charts/types.d.ts +2 -2
  74. package/dist/types/lib/dashboard-inputs/dashboard-filter-mapping-authoring.d.ts +346 -21
  75. package/dist/types/lib/dashboard-inputs/dashboard-filter-value-identity.d.ts +65 -0
  76. package/dist/types/lib/dashboard-inputs/dashboard-input-values.d.ts +6 -0
  77. package/dist/types/lib/dashboard-inputs/filter-settings.d.ts +2 -0
  78. package/dist/types/lib/dashboard-inputs/prepare-loaded-dashboard.d.ts +15 -0
  79. package/dist/types/lib/dashboard-inputs/resolve-selection-input.d.ts +3 -3
  80. package/dist/types/lib/hooks/use-dashboard-card.d.ts +2 -0
  81. package/dist/types/lib/matrix-table/matrix-delivery-policy.d.ts +1 -1
  82. package/dist/types/lib/matrix-table/matrix-editor.d.ts +52 -0
  83. package/dist/types/lib/matrix-table/matrix-runtime-types.d.ts +9 -1
  84. package/dist/types/lib/matrix-table/matrix-runtime.d.ts +5 -1
  85. package/dist/types/lib/query-context/dashboard-filter-mapping-resolution.d.ts +149 -10
  86. package/dist/types/lib/stores/dashboard-store.d.ts +137 -6
  87. package/dist/types/lib/types/common-types.d.ts +8 -0
  88. package/dist/types/lib/types/explorer-types.d.ts +10 -0
  89. package/dist/types/lib/types/semantic-types.d.ts +84 -0
  90. package/dist/types/lib/utils/build-saved-editor-card.d.ts +20 -0
  91. package/dist/types/lib/utils/card-type-change.d.ts +16 -0
  92. package/dist/types/lib/utils/field-availability-context.d.ts +25 -0
  93. package/dist/types/lib/utils/field-placement.d.ts +96 -0
  94. package/dist/types/lib/utils/field-state-calculator.d.ts +161 -0
  95. package/dist/types/lib/utils/qualified-entity-name.d.ts +2 -0
  96. package/dist/types/shared/analytics-protocol/applied-constraints.d.ts +57 -1
  97. package/dist/types/shared/analytics-protocol/field-provenance.d.ts +89 -0
  98. package/dist/types/shared/analytics-protocol/index.d.ts +2 -0
  99. package/dist/types/shared/analytics-protocol/query-policies.d.ts +52 -0
  100. package/dist/types/shared/analytics-protocol/time-window-schema.d.ts +1 -1
  101. package/dist/types/shared/analytics-protocol/time-window.d.ts +40 -1
  102. package/dist/types/shared/assistant-context/saved-dashboard-context.d.ts +4 -1
  103. package/dist/types/shared/assistant-protocol/answer-text.d.ts +20 -0
  104. package/dist/types/shared/assistant-protocol/context.d.ts +29 -29
  105. package/dist/types/shared/assistant-protocol/index.d.ts +1 -0
  106. package/dist/types/shared/assistant-protocol/limits.d.ts +6 -1
  107. package/dist/types/shared/assistant-protocol/parts.d.ts +43 -3
  108. package/dist/types/shared/assistant-protocol/request.d.ts +14 -2
  109. package/dist/types/shared/dashboard-authoring/calculated-field-identity.d.ts +3 -0
  110. package/dist/types/shared/dashboard-authoring/changes/card-query-part.d.ts +487 -0
  111. package/dist/types/shared/dashboard-authoring/changes/card-types.d.ts +34 -0
  112. package/dist/types/shared/dashboard-authoring/changes/dashboard-change.d.ts +7886 -0
  113. package/dist/types/shared/dashboard-authoring/changes/diagnostics.d.ts +45 -0
  114. package/dist/types/shared/dashboard-authoring/changes/read-card-query.d.ts +54 -0
  115. package/dist/types/shared/dashboard-authoring/changes/resolve-dashboard-changes.d.ts +96 -0
  116. package/dist/types/shared/dashboard-authoring/click-to-filter-settings.d.ts +3 -3
  117. package/dist/types/shared/dashboard-authoring/column-catalog.d.ts +32 -0
  118. package/dist/types/shared/dashboard-authoring/contracts.d.ts +0 -55
  119. package/dist/types/shared/dashboard-authoring/control-execution-contract.d.ts +24 -14
  120. package/dist/types/shared/dashboard-authoring/dashboard-card-source-index.d.ts +9 -1
  121. package/dist/types/shared/dashboard-authoring/dashboard-filter-automatic-target.d.ts +4 -4
  122. package/dist/types/shared/dashboard-authoring/dashboard-filter-mapping-contract.d.ts +3 -1
  123. package/dist/types/shared/dashboard-authoring/dashboard-filter-mapping-types.d.ts +27 -1
  124. package/dist/types/shared/dashboard-authoring/dashboard-filter-value-compatibility.d.ts +12 -3
  125. package/dist/types/shared/dashboard-authoring/dashboard-input-scope.d.ts +26 -0
  126. package/dist/types/shared/dashboard-authoring/filter-applicability.d.ts +75 -0
  127. package/dist/types/shared/dashboard-authoring/filter-reach-copy.d.ts +18 -0
  128. package/dist/types/shared/dashboard-authoring/filter-reach-preview.d.ts +97 -0
  129. package/dist/types/shared/dashboard-authoring/index.d.ts +22 -2
  130. package/dist/types/shared/dashboard-authoring/operations/apply-dashboard-operations.d.ts +10 -37
  131. package/dist/types/shared/dashboard-authoring/operations/operation-types.d.ts +189 -0
  132. package/dist/types/shared/dashboard-authoring/outline/outline-dashboard.d.ts +101 -0
  133. package/dist/types/shared/dashboard-authoring/outline/outline-filters.d.ts +100 -0
  134. package/dist/types/shared/dashboard-authoring/semantic-auto-join-card.d.ts +22 -0
  135. package/dist/types/shared/dashboard-authoring/validators.d.ts +1 -2
  136. package/dist/types/shared/layouts/engine/grid.d.ts +25 -0
  137. package/dist/types/shared/layouts/engine/index.d.ts +4 -0
  138. package/dist/types/shared/layouts/engine/sheet-layout.d.ts +7 -0
  139. package/dist/types/shared/layouts/engine/types.d.ts +125 -0
  140. package/dist/types/shared/layouts/index.d.ts +1 -2
  141. package/package.json +2 -2
  142. package/dist/chunks/apply-dashboard-operations-CZEMsx8E.js +0 -2080
  143. package/dist/chunks/calendar-day-equality-dvoQp1xW.js +0 -410
  144. package/dist/chunks/comparison-window-caption-D4E6IHPD.js +0 -1624
  145. package/dist/chunks/custom-visual-inputs-DLCD9Y5V.js +0 -329
  146. package/dist/chunks/dashboard-controls-Cq05n3e0.js +0 -2315
  147. package/dist/chunks/dashboard-filter-value-compatibility-CwQ_iSNb.js +0 -108
  148. package/dist/chunks/matrix-analytical-definition-C7Gb0e12.js +0 -117
  149. package/dist/chunks/normalize-dashboard-for-dirty-check-Bk3VYv_q.js +0 -67
  150. package/dist/chunks/numeric-presentation-7X_IrD58.js +0 -5226
  151. package/dist/chunks/resolve-dashboard-input-context-DJ2tICwz.js +0 -9415
  152. package/dist/chunks/stable-serialize-CfqXeiBP.js +0 -6
  153. package/dist/chunks/table-settings-CLZocegs.js +0 -501
  154. package/dist/chunks/use-debounced-dirty-check-BwAbnX_5.js +0 -59
  155. package/dist/chunks/zoned-wall-clock-BkxV9jS2.js +0 -46
  156. package/dist/types/shared/dashboard-authoring/change-compiler.d.ts +0 -7
  157. package/dist/types/shared/dashboard-authoring/layout-compiler.d.ts +0 -2
  158. package/dist/types/shared/layouts/create-frame-layouts.d.ts +0 -27
  159. package/dist/types/shared/layouts/frame-layouts.d.ts +0 -23
@@ -0,0 +1,22 @@
1
+ import { TFilterValue } from '../../components/surfboard/filter/types.js';
2
+ import { TCard } from '../../lib/types/common-types.js';
3
+ /**
4
+ * Where relationship filter reach runs (relationship filter reach RF-D18): a
5
+ * card on a semantic domain with no explicit join plan. The join plan is read
6
+ * as the card's filter source index reads it: a Matrix card's from its spec,
7
+ * every other card's from its config. The browser decides only whether to
8
+ * send a value (`decideDashboardFilterCardTarget`, `relationship`); the server
9
+ * decides reach through the domain's relationships. Both call this.
10
+ */
11
+ export declare function isSemanticAutoJoinCard(card: Pick<TCard, 'type' | 'dataSource' | 'config'> & {
12
+ sql?: string;
13
+ python?: string;
14
+ }): boolean;
15
+ /**
16
+ * The one semantic dataset a filter value's field reads, with its domain:
17
+ * undefined when the value names no dataset, several, or no semantic domain.
18
+ */
19
+ export declare function filterValueSemanticDataset(value: Pick<TFilterValue, 'fieldMeta' | 'semanticContext'>): {
20
+ domainId: string;
21
+ datasetName: string;
22
+ } | undefined;
@@ -1,3 +1,2 @@
1
- import { DashboardAuthoringValidationResult, DashboardChangePlan, DashboardPlan } from './contracts.js';
1
+ import { DashboardAuthoringValidationResult, DashboardPlan } from './contracts.js';
2
2
  export declare function validateDashboardPlan(plan: DashboardPlan): DashboardAuthoringValidationResult;
3
- export declare function validateDashboardChangePlan(plan: DashboardChangePlan): DashboardAuthoringValidationResult;
@@ -0,0 +1,25 @@
1
+ import { Breakpoint, CustomizableBreakpoint } from '../../../lib/types/common-types.js';
2
+ /**
3
+ * The dashboard grid's breakpoints and columns: the only place these values
4
+ * exist (responsive layouts SPEC §2.1, RL-INV-1).
5
+ */
6
+ export type { CustomizableBreakpoint };
7
+ /** Breakpoints the editor can edit: Desktop, Tablet, Phone (RL-D11, RL-D14). */
8
+ export type EditableBreakpoint = 'lg' | CustomizableBreakpoint;
9
+ /** Breakpoints a grid edit can arrive at: the editable ones, and `md`, an edit of Desktop at laptop width (RL-D17). */
10
+ export type GridEditBreakpoint = EditableBreakpoint | 'md';
11
+ export declare const DASHBOARD_GRID: {
12
+ /** Widest first. */
13
+ readonly breakpoints: readonly Breakpoint[];
14
+ readonly columns: Readonly<Record<Breakpoint, number>>;
15
+ /** react-grid-layout's default breakpoint widths, now stated. */
16
+ readonly minContainerWidthPx: Readonly<Record<Breakpoint, number>>;
17
+ readonly editable: readonly EditableBreakpoint[];
18
+ readonly customizable: readonly CustomizableBreakpoint[];
19
+ /** The preview canvas widths: Laptop, Tablet, Phone, Small phone (Desktop is at least `minContainerWidthPx.lg`; RL-D19). */
20
+ readonly previewWidthPx: Readonly<Record<Exclude<Breakpoint, "lg">, number>>;
21
+ };
22
+ export declare const LG_COLUMNS: number;
23
+ export declare function isCustomizableBreakpoint(value: unknown): value is CustomizableBreakpoint;
24
+ export declare function isEditableBreakpoint(value: unknown): value is EditableBreakpoint;
25
+ export declare function isGridEditBreakpoint(value: unknown): value is GridEditBreakpoint;
@@ -0,0 +1,4 @@
1
+ export { DASHBOARD_GRID } from './grid.js';
2
+ export type { CustomizableBreakpoint, EditableBreakpoint, GridEditBreakpoint } from './grid.js';
3
+ export type { FramePlacement, FramePosition, FrameWidth, LayoutItem, LayoutKind, SheetLayoutChange, SheetLayoutFailure, SheetLayoutInput, SheetLayoutResult, SheetLayoutRow, SheetLayouts, SheetLayoutTile, SheetLayoutView, } from './types.js';
4
+ export { applySheetLayoutChange, assertSheetLayouts, readSheetLayout } from './sheet-layout.js';
@@ -0,0 +1,7 @@
1
+ import { SheetLayoutChange, SheetLayoutInput, SheetLayoutResult, SheetLayouts, SheetLayoutView } from './types.js';
2
+ /** Every layout read (SPEC §3.2): complete, valid layouts; customized breakpoints, stored or inferred; `lg` as rows. Never fails. */
3
+ export declare function readSheetLayout(sheet: SheetLayoutInput): SheetLayoutView;
4
+ /** Every layout write (SPEC §3.1). `sheet` is the sheet before the change. */
5
+ export declare function applySheetLayoutChange(sheet: SheetLayoutInput, change: SheetLayoutChange): SheetLayoutResult;
6
+ /** Throws when layouts break invariants 1 to 4 (complete, in bounds, no overlaps, packed). For tests and development builds. */
7
+ export declare function assertSheetLayouts(layouts: SheetLayouts, frameIds: readonly string[]): void;
@@ -0,0 +1,125 @@
1
+ import { Breakpoint, TFrame, TSheet } from '../../../lib/types/common-types.js';
2
+ import { CustomizableBreakpoint, GridEditBreakpoint } from './grid.js';
3
+ /** One frame's tile on one breakpoint. The keys the dirty check persists (`PERSISTED_LAYOUT_KEYS`). */
4
+ export type LayoutItem = {
5
+ /** The frame id. */
6
+ i: string;
7
+ x: number;
8
+ y: number;
9
+ w: number;
10
+ h: number;
11
+ minW?: number;
12
+ minH?: number;
13
+ maxW?: number;
14
+ maxH?: number;
15
+ static?: boolean;
16
+ isResizable?: boolean;
17
+ isDraggable?: boolean;
18
+ };
19
+ /** Complete layouts: every breakpoint present. What the engine returns. */
20
+ export type SheetLayouts = Record<Breakpoint, LayoutItem[]>;
21
+ /** What the engine reads from a sheet. */
22
+ export type SheetLayoutInput = Pick<TSheet, 'id' | 'frames' | 'layouts' | 'layout' | 'customizedBreakpoints'>;
23
+ /** How a frame is sized and grouped (SPEC §2.4). */
24
+ export type LayoutKind = 'kpi' | 'chart' | 'table' | 'text';
25
+ /** A width by intent, as a share of the 48 `lg` columns: full 48, half 24, third 16, quarter 12. */
26
+ export type FrameWidth = 'full' | 'half' | 'third' | 'quarter';
27
+ /** Where a new frame goes on `lg`. Ids are frame ids. */
28
+ export type FramePosition = 'top' | 'end' | {
29
+ after: string;
30
+ } | {
31
+ beside: string;
32
+ };
33
+ /** How a caller states a new frame's place. Absent: placed by kind (SPEC §4.2). */
34
+ export type FramePlacement = {
35
+ position?: FramePosition;
36
+ width?: FrameWidth;
37
+ };
38
+ export type SheetLayoutChange =
39
+ /** A new frame, not in `sheet.frames` yet. Without `placement`: by kind. */
40
+ {
41
+ kind: 'frame_added';
42
+ frame: TFrame;
43
+ placement?: FramePlacement;
44
+ }
45
+ /** A frame in `sheet.frames` that leaves the sheet. */
46
+ | {
47
+ kind: 'frame_removed';
48
+ frameId: string;
49
+ }
50
+ /** A frame's content changed: the frame after the change, same id, in `sheet.frames`. */
51
+ | {
52
+ kind: 'frame_updated';
53
+ frame: TFrame;
54
+ resizeForNewKind: boolean;
55
+ }
56
+ /** The grid's items after a drag or resize stop at the breakpoint being edited. */
57
+ | {
58
+ kind: 'grid_edited';
59
+ breakpoint: GridEditBreakpoint;
60
+ items: readonly LayoutItem[];
61
+ }
62
+ /** "Back to automatic" for one customized breakpoint. */
63
+ | {
64
+ kind: 'reset_to_automatic';
65
+ breakpoint: CustomizableBreakpoint;
66
+ }
67
+ /** Arrange the sheet. */
68
+ | {
69
+ kind: 'arrange';
70
+ keepOrder?: boolean;
71
+ };
72
+ export type SheetLayoutFailure = {
73
+ code: 'frame_not_on_sheet';
74
+ frameId: string;
75
+ message: string;
76
+ } | {
77
+ code: 'frame_already_on_sheet';
78
+ frameId: string;
79
+ message: string;
80
+ } | {
81
+ code: 'position_target_not_found';
82
+ frameId: string;
83
+ message: string;
84
+ } | {
85
+ code: 'breakpoint_not_editable';
86
+ breakpoint: string;
87
+ message: string;
88
+ };
89
+ export type SheetLayoutResult = {
90
+ ok: true;
91
+ /** The sheet's frames in their new order; the input array itself when untouched. */
92
+ frames: TFrame[];
93
+ layouts: SheetLayouts;
94
+ customizedBreakpoints: CustomizableBreakpoint[];
95
+ /** False when `frames`, `layouts` and `customizedBreakpoints` equal what `readSheetLayout(sheet)` gives. */
96
+ changed: boolean;
97
+ /**
98
+ * False when `layouts` and `customizedBreakpoints` equal the view's. Callers write them only when
99
+ * true, so a change with no layout effect (a frame update keeping its kind) leaves stored layouts
100
+ * untouched: a no-op editor Done stays clean (V-50).
101
+ */
102
+ layoutsChanged: boolean;
103
+ } | {
104
+ ok: false;
105
+ failure: SheetLayoutFailure;
106
+ };
107
+ /** `width`: the `FrameWidth` whose column count is nearest the item's `lg` `w`; a tie goes to the wider. */
108
+ export type SheetLayoutTile = {
109
+ frameId: string;
110
+ kind: LayoutKind;
111
+ width: FrameWidth;
112
+ };
113
+ export type SheetLayoutRow = {
114
+ tiles: SheetLayoutTile[];
115
+ };
116
+ export type SheetLayoutView = {
117
+ /** Complete and valid on every breakpoint; what the grid renders. */
118
+ layouts: SheetLayouts;
119
+ /** Stored `customizedBreakpoints`, or inferred when absent (SPEC §4.6). */
120
+ customizedBreakpoints: CustomizableBreakpoint[];
121
+ /** The `lg` layout as rows, top to bottom, tiles left to right. */
122
+ rows: SheetLayoutRow[];
123
+ /** True when `layouts` differs from what is stored. */
124
+ repaired: boolean;
125
+ };
@@ -1,2 +1 @@
1
- export * from './create-frame-layouts.js';
2
- export * from './frame-layouts.js';
1
+ export * from './engine/index.js';
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.1.545",
8
+ "version": "0.1.547",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",
@@ -123,7 +123,7 @@
123
123
  "build": "node scripts/build.mjs",
124
124
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
125
125
  "lint:regressions": "node scripts/lint-regressions.mjs",
126
- "check:guards": "node scripts/card-config-consumers.mjs && node scripts/components-entry-imports.mjs && node scripts/types-entry-imports.mjs && node scripts/card-query-assembly-imports.mjs && node scripts/assistant-chat-imports.mjs && node scripts/filter-model-reads.mjs",
126
+ "check:guards": "node scripts/card-config-consumers.mjs && node scripts/components-entry-imports.mjs && node scripts/types-entry-imports.mjs && node scripts/card-query-assembly-imports.mjs && node scripts/assistant-chat-imports.mjs && node scripts/filter-model-reads.mjs && node scripts/layout-engine.mjs",
127
127
  "preview": "vite preview",
128
128
  "test": "vitest run",
129
129
  "test:changed": "vitest run --changed",